Java - 访问扫描仪方法

标签 java

您好,希望有人能提供帮助。我正在做一个简短的 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/

相关文章:

java - JSON 将数组与字符串数组组合以获得紧密的名称值对

java - 如何将 Java 日期格式的日期传递给 cURL (PHP)?

java - 在 tomcat root 的 Web 应用程序中找不到 TransformerFactory

java - 有没有一种方法可以在没有反射或 setter/getter 的情况下获取类的所有非空成员?

java - 我是否会通过具有相同的 @Field name 值来覆盖或添加到 Lucene 索引

java - 如何获取 java Process 对象的 MemoryUsage 统计信息

java - 按钮声音不起作用

java - 如何乘以数组长度减去索引

java - Firebase 数据未显示在我的 RecyclerView 上

c# - 网络编程和数据包交互