这是代码的一部分但是当我正在执行时我得到了错误 该计划是关于线性编程 抱歉我的英语,或愚蠢的问题
“错误:无法从静态上下文引用非静态方法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);
}
}
答案 0 :(得分:1)
当您尝试使用非静态方法时,会发生此错误。 我不知道你的其余代码,但似乎你试图用你的main方法调用(非静态)get_total_profit操作?
有两种可能性:一方面,您可以将get_total_profit更改为static(您可能不想要) 或者另一方面,您可以在ip1类中创建一个函数,而不带参数“this”。