如何将静态void方法中的int数据返回到main方法?

时间:2015-07-14 20:56:11

标签: java methods int return-value

所以一切正常,但我唯一的问题是我不确定如何从我的speakLine()方法返回一个数据。我正在尝试打印出一系列问题所得到的正确答案。

这样的事情:你有3个正确的“2”。

Public static void main(String[] args) throws Exception {

    int cal;
    int i;
    for (i = 0; i < 3; i++) {

        int num1 = randomA();

        int num2 = randomB();

        cal = num1 + num2;

        speakLines(num1, num2, cal);
    }

我需要来自speakLine方法()的“count”int:

    System.out.println("You got " + count + "of " + i + "right");
} // end main()

这是方法

public static void speakLines(int num1, int num2, int cal) {
    int count = 0;

    Scanner scanner = new Scanner(System.in);

    Voice voice;

    // set up a Voicemanager object and use it to link voice with a                     particular voice
    VoiceManager voiceManager = VoiceManager.getInstance();
    voice = voiceManager.getVoice("kevin16");

    // load the selected voice
    voice.allocate();

    // begin speaking the text
    System.out.println("what is " + num1 + " + " + num2 + ":");
    voice.speak("what is " + num1 + " + " + num2 + ":");

    //talk
    System.out.println("Please enter answer");
    int answer = scanner.nextInt();

    //talk
    if (answer == cal) {
        System.out.println("That's right");
        voice.speak("That's right");
        count += 1;

上面的“Count + = 1”^ - 我需要从main()方法打印这个count int。这是我试图返回主方法的数据“计数”。这告诉我用户有多少答案。

    } else {
        System.out.println("Sorry, the answer is" + cal);
        voice.speak("Sorry, the answer is " + cal);
    }

} // end speakLines()

public static int randomA() {
    int A; 
    A = 1 + (int) (Math.random() * 10);
    return A;

}

public static int randomB() {
    int B;
    B = 1 + (int) (Math.random() * 5);
    return B;
}
// end randomB()
} // end class 

现在我知道static void方法不会返回数据。但我知道应该有一种返回特定数据的方法。

3 个答案:

答案 0 :(得分:1)

声明类变量public static int count;以替换count方法中的局部变量speakLines

执行此操作后,您应该能够在主方法中访问和打印score

答案 1 :(得分:0)

返回代码可能不是你想要的。您可能想要写出标准输出的答案。这样一些其他程序可以拿起它。 System.out上有各种方法可以写入标准输出。

如果你想使用java程序作为程序链的一部分,你可以使用标准输入和标准输出。

System.out.println导致程序发送输出。这可以由另一个程序读取。例如,您可以运行此命令并将其输出重定向到文件:java -jar yourjar > out.txt

您还可以使用竖线字符将此输出发送到另一个程序:

java -jar yourJar | grep of 

我不知道你想要对输出做什么具体的。

答案 2 :(得分:0)

您可以在包含类(主函数上方的那个)上使用静态字段,并在speakLines的开头重置它。

通常你不需要静态,但由于main是静态方法,因此无法访问包含类的非静态字段。

使用将保存int值的class参数,并重置speakLines开头的值。