程序未按预期运行

时间:2016-11-02 13:18:00

标签: java

我正在尝试创建一个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");
        }

    }

}

2 个答案:

答案 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/

我希望我有所帮助。

祝你有个愉快的一天。 :)