您好,希望有人能提供帮助。我正在做一个简短的 Java 类(class),需要设置 3 个类,它们基本上可以相互通信,但我失败了。
您会从下面的代码中发现,我正在尝试将读取用户输入和执行任何需要的数学运算的任务拆分到不同的类中,但是出了问题
有什么想法吗?感谢您的关注。
这是简单的主类:-
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.start();
}
}
计算器类(或其一部分):-
public class Calculator {
private Reader reader;
public void Calculator(Reader reader) {
this.reader = reader;
System.out.println("Calculator set up.");
}
public void start() {
while (true) {
System.out.print("command: ");
String command = reader.readString(); // It fails here:
if (command.equals("end")) {
break;
}
if (command.equals("sum")) {
sum();
} else if (command.equals("difference")) {
difference();
} else if (command.equals("product")) {
product();
}
}
最后是 Reader 类:-
public class Reader {
private Scanner input;
public void Reader(Scanner input) {
this.input = input;
System.out.println("Reader set up.");
}
public String readString() {
return input.nextLine();
}
public int readInteger() {
return Integer.parseInt(input.nextLine());
}
}
最佳答案
您使用的所有构造函数都存在问题。构造函数是没有返回类型的特殊方法,因此在您的情况下,public void Calculator(Reader reader)
需要是 public Calculator(Reader reader)
(删除void
)。这同样适用于其他构造函数。
完成此操作后,您需要对实例化 Calculator
类的方式进行修改:
Calculator calculator = new Calculator();
应该变成:
Calculator calculator = new Calculator(new Reader(new Scanner(System.in)));
关于Java - 访问扫描仪方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23079493/