2016-08-16 19 views
-1

これはコードの一部ですが、実行時にエラーが発生しています プログラムは線形プログラミングに関するものです 英語または愚か者については申し訳ありません質問非静的メソッドannotは静的コンテキストから参照されます

"エラー:非静的メソッドget_total_profit(String)を出力下

output = get_total_profit(ip1);静的コンテキストから参照することができない^ 1つのエラー"

import java.io.*; 
import java.lang.*; 
import java.util.*; 
import java.text.DecimalFormat; 

public class CandidateCode { 

String get_total_profit(String input1) { 
    String[] inputs = input1.split(","); 
    // Piece of farm land in square kilometer 
    float L = Float.valueOf(inputs[0]); 
    // Fertilizer in kg 
    float F = Float.valueOf(inputs[1]); 
    // Insecticide in kg 
    float P = Float.valueOf(inputs[2]); 
    // Fertilizer required in kg for square kilometer of Wheat 
    float F1 = Float.valueOf(inputs[3]); 
    // Insecticide required in kg for square kilometer of Wheat 
    float P1 = Float.valueOf(inputs[4]); 
    // Fertilizer required in kg for square kilometer of Rice 
    float F2 = Float.valueOf(inputs[5]); 
    // Insecticide required in kg for square kilometer of Rice 
    float P2 = Float.valueOf(inputs[6]); 
    // Selling price of wheat per square kilometer 
    float S1 = Float.valueOf(inputs[7]); 
    // Selling price of rice per square kilometer 
    float S2 = Float.valueOf(inputs[8]); 

    // Result Variables 
    float totalRiceInsecUsed = 0f; 
    float totalRiceFertUsed = 0f; 
    float totalWheatInsecUsed = 0f; 
    float totalWheatFertUsed = 0f; 
    float areaOfWheat = 0.00f; 
    float areaOfRice = 0.00f; 
    float amount = 0.00f; 

    while (true) { 
     if ((L == areaOfRice + areaOfWheat) 
       || P == totalRiceInsecUsed + totalWheatInsecUsed 
       || F == totalRiceFertUsed + totalWheatFertUsed || F2 == 0 
       || F1 == 0 || P2 == 0 || P1 == 0) { 
      break; 
     } 

     float calRiceProfit = Math.min(F/F2, P/P2) * S2; 
     float calWheatProfit = Math.min(F/F1, P/P1) * S1; 

     if (calRiceProfit > calWheatProfit) { 
      float areaInsecUsed = P/P2; 
      float areaFertUsed = F/F2; 
      if (areaInsecUsed > areaFertUsed) { 
       L = L - areaFertUsed; 
       F2 = 0; 
       totalRiceFertUsed = totalRiceFertUsed + F2; 
       areaOfRice = areaOfRice + areaFertUsed; 
       amount = amount + areaFertUsed * S2; 
      } else if (areaInsecUsed < areaFertUsed) { 
       L = L - areaInsecUsed; 
       P2 = 0; 
       totalRiceInsecUsed = totalRiceInsecUsed + areaInsecUsed; 
       areaOfRice = areaOfRice + areaInsecUsed; 
       amount = amount + areaInsecUsed * S2; 
      } 
     } else { 
      float areaInsecUsed = P/P1; 
      float areaFertUsed = F/F1; 
      if (areaInsecUsed > areaFertUsed) { 
       L = L - areaFertUsed; 
       F1 = 0; 
       totalWheatFertUsed = totalWheatFertUsed + F1; 
       areaOfWheat = areaOfWheat + areaFertUsed; 
       amount = amount + areaFertUsed * S1; 
      } else if (areaInsecUsed < areaFertUsed) { 
       L = L - areaInsecUsed; 
       P1 = 0; 
       totalWheatInsecUsed = totalWheatInsecUsed + areaInsecUsed; 
       areaOfWheat = areaOfWheat + areaInsecUsed; 
       amount = amount + areaInsecUsed * S1; 
      } 
     } 

    } 
    DecimalFormat df = new DecimalFormat(); 
    df.setMaximumFractionDigits(2); 
    df.setMinimumFractionDigits(2); 
    return df.format(amount) + "," + df.format(areaOfWheat) + "," 
      + df.format(areaOfRice); 
} 
} 

答えて

4

以下に示すように、あなたが、その後、staticとしてあなたの方法を定義し、あなたのクラスの新しいインスタンスを作成したくない場合は、次の

public static String get_total_profit(String input1) { 
    /** 
    * your code goes here 
    */ 
} 
+0

ありがとう、たくさんの男、確かにダムの間違いだった:D 私の悪い –

+0

ハハ...それは起こる。問題ありません。 –

2

get_total_profitメソッドを静的コンテキストで参照する必要があり、get_total_profitメソッドを静的にすることができない場合は、静的コンテキストからget_total_profitメソッドを含むクラスに参照変数を宣言できます。行を次のコードに置き換えます。

CandidateCode candidateCode=new CandidateCode(); 
    output=candidateCode.get_total_profit(ip1); 
+0

た行を置き換えますか? –

+0

出力= get_total_profit(ip1)と書かれている行。その変数をCandidateCode型のローカル変数の宣言に置き換え、変数を使用してメソッドget_total_profitを参照します。 –

1

静的なものから非静的メソッドを使用しようとすると、このエラーが発生します。 残りのコードは分かりませんが、メインメソッドのようなものから静的でないget_total_profit操作を呼び出そうとしているようですね。

2つの可能性があります:一方で、get_total_profitを静的に変更することができます(これは望ましくないでしょう) または、これを参照するパラメータなしでip1のクラスで関数を作成することができます"

関連する問題