2017-10-13 23 views
-7

forループが内部で2回実行されないため、無限ループするプログラムにwhileループがあります。あなたは、コードをしているものの、あなたの問題はあなたの変数のいくつかの用途などにあるようだforループはwhileループ内では実行されません。

Scanner scan = new Scanner(System.in); 
int n = scan.nextInt(); 

ArrayList<Integer> taxi = new ArrayList<Integer>(); 
for (int i=0; i<n; i++) { 
    taxi.add(scan.nextInt()); 
} 

int i = 0; 
int total=0; 
int tax=0; 
int num = 0; 
while (num<n) { 
    i=0; 
    for (i=0; i<n; i++) { 
    if (total+taxi.get(i)<=4) { 
     total+=taxi.get(i); 
     System.out.println(total); 
     num++; 
    } 
    } 
    tax++; 
} 
System.out.println("Taxis= " + tax); 
+4

ここでは、デバッガの使い方を学ぶのに適しています。本当に。各コード行をステップ実行し、変数の値を調べ、動作を確認する必要があります。デバッグを学ぶことは、言語を学ぶことと同じくらい重要です。 – OldProgrammer

+0

または 'System.out.println()'を少し入れてください;-) – piechuckerr

+0

またはif条件の中からnum ++を削除してください...条件が真でない場合、それはincではなく、ゲームオーバーです。 – Totoc1001

答えて

0

を探して:私は、入力から4の合計を持っています組み合わせの数を見つけたいとここに私のコードです私はコードがコンパイルされないようにする複数回。これらの問題を未然に防止するために、より良い名前またはよりユニークな名前を使用してみてください。そのような方法ですべての変数をゼロにしないようにアドバイスすることもできます。最後に、問題は変数nの使用に関係しています。なぜなら、whileループでは変化しない固定された数のままであるため、常に真であるということです。これを修正する最善の方法は、whileループを終了するか、またはforループのようなカウントされたループを使用するために

コマンドを使用することです。 私の正直な意見では、次回これらの質問をするときに、すべての変数を適切な場所にプリントラインでチェックするようにお願いします。

関連する問題