我制作了一个简单的基于文本的计算器,除了处理用户输入的方法外,它都运行良好。即使我在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:问题解决了,我尝试了用唯一需要的方法创建新扫描仪的想法,就像一个魅力。谢谢!
答案 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()方法中使用。
祝你好运!