Scanner.nextInt()挣扎

时间:2014-04-11 02:05:22

标签: java methods static non-static

我制作了一个简单的基于文本的计算器,除了处理用户输入的方法外,它都运行良好。即使我在main方法中创建了我的类的新实例,并使用该实例来调用输入方法,我仍然得到编译器错误,我从静态上下文引用nextInt()。请赐教。我的主要方法如下:

  public static void main (String[] args) {
    CalculatorTextVersion calculator = new CalculatorTextVersion();
    Scanner scanner = new Scanner(System.in);
    calculator.getCalculation();
  }

getCalculation方法如下:

  public void getCalculation() {

    while (calculating = true) {

      System.out.print("First number: ");
      first = Scanner.nextInt();
      System.out.print("Second number: ");
      second = Scanner.nextInt();
      System.out.println("Choose an operation: | 1. Add | 2. Subtract | 3. Multiply | 4. Divide |:");
      opcode = Scanner.nextInt();
      calculate(first, second, opcode);
      getSymbol(opcode);
      System.out.println(first + opcode + second + " equals " + result + "." );
      System.out.print("Continue? Y/N:");
      yesNo = Scanner.next();

      if (yesNo == "Y" | yesNo == "Yes" | yesNo == "yes") {
        calculating = true;
      }

      if (yesNo == "N" | yesNo == "No" | yesNo == "no") {
        calculating = false;
      }
    }
  }

注意:所有变量,方法和导入都很好,我只是没有包含它们,因为它们不是问题的一部分。

编辑:使用经常建议的为扫描程序创建实例变量的技术已经过了编译器,但在运行时生成了空指针错误。

编辑2:问题解决了,我尝试了用唯一需要的方法创建新扫描仪的想法,就像一个魅力。谢谢!

3 个答案:

答案 0 :(得分:1)

这是最简单/最好的解决方案,所以我删除了其他的。

public class YourClass
{
    public static void main(String[] args)
    {
        //Scanner scanner is now declared in your CalculatorTextVersion
        //CalculatorTextVersion() class in its constructor

        //Scanner scanner = new Scanner(System.in);

        CalculatorTextVersion calculator = new CalculatorTextVersion();
        calculator.getCalculation();
    }
}

import java.util.Scanner;

public static class CalculatorTextVersion
{
    Scanner scanner;

    public CalculatorTextVersion() {
        scanner = new Scanner(System.in);
    }
    public void getCalculation()
    {
        scanner.nextInt();
    }
}

答案 1 :(得分:0)

我猜你需要搬家

Scanner scanner = new Scanner(System.in);

进入CalculatorTextVersion类。

答案 2 :(得分:-5)

您需要这样做:

public Scanner scanner = new Scanner(System.in);

在主要方法中。

这会公开扫描程序,以便在getCalculation()方法中使用。

祝你好运!