所以一切正常,但我唯一的问题是我不确定如何从我的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方法不会返回数据。但我知道应该有一种返回特定数据的方法。
答案 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开头的值。