当前位置: 首页 > 知识库问答 >
问题:

非静态方法,不能从静态上下文引用[duplicate]

郑嘉年
2023-03-14

这是一个代码的一部分,但当我执行时,我得到了一个错误程序是关于线性规划对不起我的英语,或关于愚蠢的问题

“错误:不能从静态上下文引用非静态方法get_total_profity(String)

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个答案

爱炯
2023-03-14

如果不想创建类的新实例,请将方法定义为静态的,如下所示:

public static String get_total_profit(String input1) {
    /**
    * your code goes here
    */
}
 类似资料:
  • 问题内容: 我想一劳永逸地理解这一点。 为此,请原谅下面粘贴的大量代码,但是我不想遗漏任何细节。 我唯一更改的是加载的URL。但这不会导致错误。 我想将我的函数称为“ readPosiitons ”。简单的解决方案,使其静态。真正的解决方案,我不确定。 请帮助我更好地了解如何以正确的方式解决此错误。 谢谢!! 问题答案: 真正的解决方案?不要在方法中放太多东西。那是给菜鸟的。 Java是一种面向对

  • 所以我尝试绑定我的Numpad键,以便在计算器应用程序中使用它们,但当我尝试从主窗口以字符串形式发送keyEvent时。java到我的MainWindowController公共void方法它给了我一个错误“不能从静态上下文引用非静态方法”,即使我的类都不是静态的?以下是主窗口代码: } 这里是MainWindowController文件(看keyPress方法)

  • 我想更改FrameLayout的背景。这是我现在使用的代码: 但出现以下错误: 无法从静态上下文引用非静态方法“setBackground(android.graphics.drawable.drawable)”。 怎么了?

  • 我从这行中得到了“无法从静态上下文引用非静态方法”错误:

  • mainactivity.java: xmlReader.java: (如果需要,我也可以为station.java和dbhandler.java添加代码) 我怎样才能绕过这个编程悖论呢?我通常能为这里的任何问题找到答案,但这是我第一次找不到答案。如果你知道我错过的解决方案的链接,请在下面发布。多谢。

  • 问题内容: 不需要任何代码,只需要某种指导。希望保持我的学术诚信;) 我不断收到那个烦人的错误。我需要为每个Room实例调用toString方法。有什么建议?如果可能的话,我希望在2小时内给出答案。 问题答案: 您不应尝试调用Room类,而应调用Room 对象 。在该方法中,请使用for循环遍历房间数组,并打印通过调用数组中保存的每个Room对象返回的String,因为这是您的方法应做的事情。 例