我正在尝试创建一个java程序,它将添加输入,直到总数等于100+或用户输入5个数字。我还尝试为其添加最高运行,以跟踪最高输入。目前它在5个输入之后继续运行,当它总共不到100并且我的最高运行不起作用。我该如何解决这个问题?(如果你能说的话,我是Java的新手)
import java.io.*;
public class HighScoreTest {
public static void main(String[] args) {
// input streams.
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(input);
// constant declarations
final Integer MAX = 100;
final Integer MAX_NUMBER = 4;
// variable declarations
String sName;
Integer currentTotal;
Integer currentNumber;
Integer numbersInputed = 0;
Integer count;
Integer maxRunToDate = 0;
// we catch exceptions if some are thrown.
// an exception would be entering a string when a number is expected
try {
System.out.println("What is your name?");
// reading string from the stream
sName = reader.readLine();
currentTotal = 0;
for(count = 0; count < MAX_NUMBER; count++) {
numbersInputed += count;
}
do {
System.out.println("Please enter a number");
currentNumber = Integer.parseInt(reader.readLine());
currentTotal = currentTotal + currentNumber;
}while(currentTotal < MAX || numbersInputed == MAX_NUMBER);
if (maxRunToDate < currentTotal) {
maxRunToDate = currentTotal;
}
System.out.println(sName +", the total for this run is "+ currentTotal);
System.out.println("The highest run is "+ maxRunToDate);
} catch (IOException e){
System.out.println("Error reading from user");
}
}
}
答案 0 :(得分:1)
帮助您前进的一些帮助:
currentRun = currentRun + currentNumber;
简直没有意义!
我认为currentRun到目前为止应计算次数。这样你就可以在第五轮之后停下来。
因此:你应该每轮增加那个计数器。
换句话说:尝试分开事物。退一步,考虑一下你想要的信息,跟踪&#34;以及你真正需要做多少变量。
请理解:我们不会为您解决您的任务。如果有的话,会有一些关于如何取得进展的指导。但是,请不要指望我们在您的代码中找出所有错误并为您解决这些错误。
答案 1 :(得分:0)
您需要了解以下几点:
首先,避免使用像Integer
这样的包装类,除非您打算将它与Colection
FrameWork或Streams一起使用。如果您的问题是解析的输出是Integer
类,请不要担心,因为它将自动取消装箱。像这样:
int currentNumber = Integer.parseInt(reader.readLine()); //Auto Unboxing
其次,你为什么一开始就有for循环?去掉它。如果您想初始化numbersInputed
变量,请执行此操作。
第三,如果你想增加或减少,你可以使用++
或` -
并查看Oracle教程:https://docs.oracle.com/javase/tutorial/
我希望我有所帮助。
祝你有个愉快的一天。 :)