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

不能从静态上下文引用非静态变量量[重复]

阎昌勋
2023-03-14

我最近开始用Java编码,我有一个关于轮盘赌/挖掘游戏(终端)的问题。

每次尝试使用“bank.amount”购买特定商品时,都会出现以下错误:

这是我的shop.java文件

package shop;
import coins.bank;
import java.util.Scanner;  // Import the Scanner class to write text for buying in the shop

public class shop {
    private static Object coins;

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        boolean playing;
        playing = true;

        System.out.println("\n");
        System.out.println("\t\t            •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••   ");
        System.out.println("\t\t           •••                                                                  •••   ");
        System.out.println("\t\t          •••                       Welcome to our shop!                         •••   ");
        System.out.println("\t\t           •••                                                                  •••   ");
        System.out.println("\t\t            •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••   ");

        Scanner shop = new Scanner(System.in);  // Create a Scanner object for shop
        System.out.println("\t\t               ⛏ 1. Buy BetterFarm - 3000 Coins (farm faster and more efficient!) ⛏");
        System.out.println("\t\t               \uD83D\uDCA8 2. Buy ShorterDelay - 2000 Coins (this way you don't have to wait so long!) \uD83D\uDCA8");
        System.out.println("\t\t               \uD83C\uDFB0 3. Buy Token for Casino - 1000 Coins \uD83C\uDFB0");
        System.out.println("\n");
        System.out.println("\t\t               \uD83D\uDCD9 Commands: \uD83D\uDCD9");
        System.out.println("\t\t               \uD83D\uDCD9 Betterfarm: /buy Betterfarm \uD83D\uDCD9");
        System.out.println("\t\t               \uD83D\uDCD9 ShorterDelay: /buy ShorterDelay \uD83D\uDCD9");
        System.out.println("\t\t               \uD83D\uDCD9 Token: /buy Token \uD83D\uDCD9");
        System.out.println("\n");

        while (playing) {
            String in = input.next();

            if (in.equals("/buy BetterFarm") && bank.amount >= 3000) {
                System.out.println("You've successfully bought BetterFarm!");
            }

            else {
                System.out.println("You don't have enough Coins to buy BetterFarm!");
            }
        }
    }
}

如果你需要更多的代码(例如,我的主类或银行类),请随时问我!

共有1个答案

刘承运
2023-03-14

你需要一个银行的实例

Scanner input = new Scanner(System.in); 

Bank b = new Bank();
while (b.amount > 0) {
    String in = input.nextLine(); // your input contains spaces, use nextLine 
    if (in.equals("/buy BetterFarm") && b.amount >= 3000) {
        b.amount -= 3000;
        System.out.println("You've successfully bought BetterFarm!");
    } 
}
 类似资料:
  • 我是Android编码的n00b,今天我想尝试使用定位服务。 我设置了一个简单的类和一个简单的main,只是为了得到经度和纬度。 但当我尝试调用retrive的构造时,long and latitude Android Studio弹出了一个错误: 错误:(33,16)错误:无法从静态上下文引用非静态变量纬度 这是我的位置班

  • 我编写了以下测试代码: 但会出现以下错误: 我如何让我的方法识别我的类变量?

  • 问题内容: 我是Java新手,我正在尝试通过递归函数部署斐波那契跟踪,然后计算运行时间。这是我设法编写的代码: 问题是,当我尝试将其转换为字节码时,出现以下错误: 我想知道是什么问题?! 问题答案: 更改 至 并使该方法静态。 或者,改变 至

  • 错误来自此行板状态 addme = 新板状态(); 由于某种原因,它所指向的非静态变量是“新”的。我不清楚如何修复这个错误,因为new不应该是一个变量,也不是。 查看stackoverflow记录,该错误通常来自非静态方法,通常通过将该方法设为静态或完全绕过该方法来解决。T 下面的代码是为了引用这个语句前后发生的事情。 }……

  • 我在阅读Kathy and Bert SCJP1.6时遇到了以下代码: 虽然是在跟踪变量的主题下,但我无法理解如何在main()方法(static)中引用非静态变量myBar?

  • 我试图从main方法中的类调用方法,但我一直得到这样的错误:我不能从静态上下文调用非静态变量。 多谢了。