4 回答

TA貢獻1712條經驗 獲得超3個贊
你必須糾正你的while循環,因為在它的當前狀態下,它不會做任何事情。
這是對您的代碼的更正,它基本上可以工作(我不知道所需的輸出,但看起來不錯):
public static void main(String[] args) {
int sumaA = 1000;
int sumaB = 0;
Random rand = new Random();
int n = rand.nextInt(9);
int g = rand.nextInt(49);
int runCounter = 0;
while (sumaA > sumaB) {
runCounter++;
System.out.println("Loop run number " + runCounter);
System.out.println("Random N = " + n);
sumaA += n;
System.out.println("sumaA: " + sumaA);
System.out.println();
System.out.println("Random N= " + g);
sumaB += g;
System.out.println("sumaB: " + sumaB);
}
System.out.println("loop ran " + runCounter + " times");
System.out.println("value sumaA" + sumaA + "value sumaB " + sumaB);
}
請看一下循環現在的樣子。每次循環運行要執行一次的所有內容都必須在循環主體內(大括號)。

TA貢獻1811條經驗 獲得超5個贊
do {
int n = rand.nextInt(9);
int g = rand.nextInt(49);
System.out.println("Random N= "+ n);
sumaA += n;
System.out.println("sumaA: "+sumaA);
System.out.println();
System.out.println("Random N= "+ g);
sumaB += g;
System.out.println("sumaB: "+sumaB);
System.out.println("loop runs numbers");
System.out.println("value sumaA" + sumaA + "value sumaB " + sumaB);
} while (sumaA>sumaB);
}
你好,這是你想做的嗎?

TA貢獻1878條經驗 獲得超4個贊
您必須正確構造您的 while 循環并獲取局部變量 counter 并將其初始化為 0。而 while 迭代在 counter 變量中添加 +1。請考慮以下代碼:
public static void main( String[] args )
{
int sumaA = 1000;
int sumaB = 0;
int counter = 0;
Random rand = new Random();
int n = rand.nextInt( 9 );
int g = rand.nextInt( 49 );
while ( sumaA > sumaB )
{
System.out.println( "Random N= " + n );
sumaA += n;
System.out.println( "sumaA: " + sumaA );
System.out.println();
System.out.println( "Random N= " + g );
sumaB += g;
System.out.println( "sumaB: " + sumaB );
counter++;
}
System.out.println( "loop runs numbers " + counter );
System.out.println( "value sumaA " + sumaA + "value sumaB " + sumaB );
}

TA貢獻1862條經驗 獲得超6個贊
while 循環括號內的代碼,直到括號內的條件為假。因此,例如這段代碼:
int i = 0;
loops = 0
while(i < 6){
loops++;
System.out.println("loop runs numbers"+loops);
i+=2;
System.out.println("i: "+i);
}
輸出:
循環運行數字 1
我:2
循環運行數字 2
我:4
循環運行數字 3
我:6
然后因為 i 不小于 6 而停止。
現在您的代碼的問題是您的 while 括號內沒有任何指令,因此括號內的條件以 true 開始,并且永遠不會變為 false,因為您沒有在循環內更改任何內容。您應該做的是將代碼移動到 while 括號內,如果您希望計算循環運行次數,請添加一個“循環”變量。最終代碼應如下所示:
import java.util.*;
class Sum {
public static void main(String[] args) {
int sumaA = 1000;
int sumaB = 0;
int loops = 0;
while (sumaA>sumaB){
Random rand = new Random();
int n = rand.nextInt(9);
int g = rand.nextInt(49);{
System.out.println("Random N= "+ n);
sumaA += n;
System.out.println("sumaA: "+sumaA);
System.out.println();
System.out.println("Random N= "+ g);
sumaB += g;
System.out.println("sumaB: "+sumaB);
loops++;
System.out.println("loop runs numbers"+loops);
System.out.println("value sumaA" + sumaA + "value sumaB " + sumaB);
}
}
}
添加回答
舉報