非静态方法不能从静态上下文中引用

时间:2016-08-16 06:29:07

标签: java string

这是代码的一部分但是当我正在执行时我得到了错误 该计划是关于线性编程 抱歉我的英语,或愚蠢的问题

“错误:无法从静态上下文引用非静态方法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);
}
}

1 个答案:

答案 0 :(得分:1)

当您尝试使用非静态方法时,会发生此错误。 我不知道你的其余代码,但似乎你试图用你的main方法调用(非静态)get_total_profit操作?

有两种可能性:一方面,您可以将get_total_profit更改为static(您可能不想要) 或者另一方面,您可以在ip1类中创建一个函数,而不带参数“this”。