Java - 访问扫描程序方法

时间:2014-04-15 09:21:04

标签: java

嗨,希望有人可以提供帮助。我正在做一个简短的Java课程,需要设置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();
        }
    }

最后读者类: -

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());
}

}

3 个答案:

答案 0 :(得分:1)

提供构造函数而不是mothod。

 Calculator(Reader reader) {
    this.reader = reader;
    System.out.println("Calculator set up.");
}

之后你可以用@subhrajyoti建议改变你的主要方法。

答案 1 :(得分:1)

您使用的所有构造函数都存在问题。构造函数是 no 返回类型的特殊方法,因此在您的情况下,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)));

答案 2 :(得分:1)

除上述建议外, 1 GT;你的构造函数(Reader和Calculator)返回void。但是构造函数不能返回任何值。所以,删除void关键字。 你必须导入Scanner类(即java.util.scanner)。