2016-11-02 10 views
-3

合計が100+になるか、ユーザーが5つの数値を入力するまで、入力を追加するJavaプログラムを作成しようとしています。私はまた、最高の入力を追跡する最高の実行を追加しようとしています。現在のところ、合計が100未満で、最高ランが動作しない場合、5つの入力の後に実行を続けます。 ?私はこの問題を解決する方法をあなたが軌道に乗るためにプログラムは意図したとおりに実行されていません

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

    } 

} 
+1

問題を再現しながらできるだけプログラムを短くします。プログラム全体のデバッグを依頼しないでください。それを短縮したら、おそらく問題を見るか、もう一度聞くことができます。 –

+0

ユーザが5つの数字を入力したい場合、なぜMAX_NUMBERが4に設定されていますか? – QBrute

答えて

1

いくつかの助けを(あなたが言うことができる場合、私は、Javaに新たなんだ):

currentRun = currentRun + currentNumber; 

だけで意味がありません!

これまでのところ、currentRunはの実行数をカウントすると仮定します。あなたが5ラウンド後に止めることができるように。

したがって、各ラウンドごとにそのカウンタを増分するだけです。

他の言葉では、と別のものを試してみてください。戻って、どのような種類の情報を "追跡"したいのか、それに本当に必要な変数の数を考えてください。

ご理解ください。私たちはあなたの課題を解決することはありません。まったく進歩を遂げる方法についてのガイダンスがあります。しかし、すべてあなたのコードのバグを理解して解決するとは思わないでください。

+0

彼の 'numbersInputed'も意味をなさないので、基本的にコード全体が変です。 –

+0

私はその変数を奇妙な名前にしました、私はその時点までに蓄積された合計でcurrentTotalを意味します。したがって、その行は、ユーザーが入力した番号をその時点の合計に加算することによってcurrentTotalを更新します。 numberInputedは、入力数を加算する変数です。 – Lummers

+0

@Lummersあなたが*することが意味することは問題ではありません。コンピュータ(と私たち)は、あなたが書いた**コード**についてのみ知っています。そしてMuratが言っているように、あなたのコードはさまざまな形で奇妙に見えます。私は、**あなたが行くためにあなたのコードで**明白な問題を指摘** ... – GhostCat

0

あなたが知る必要があるいくつかの事柄があります:あなたはColectionフレームワークやさえストリームと一緒にそれを使用する場合を除き

まず、Integerのようなラップクラスを避けます。あなたの問題が解析の出力がIntegerクラスであるという事実なら、それは自動的にunboxされるので、心配しないでください。このようなもの:

int currentNumber = Integer.parseInt(reader.readLine()); //Auto Unboxing 

第2に、なぜあなたは初めにforループを持っていますか?それを除く。変数numbersInputedを初期化する場合は、それを実行してください。 https://docs.oracle.com/javase/tutorial/

私は私が助けたと思っている:

また、Oracleのチュートリアルをチェック - あなたが増減するwhant場合

そして第三に、あなただけの++かを `使用することができます。

よろしくお願いいたします。 :)

関連する問題