對於此代碼按預期運行使用您的cmd /終端不是IDE。 (或者你不會看到\ r的正確效果)Java printf併發症
當終端中的9到達4個空格後的最右邊位置時,它將轉向並且向後移動4個空格並且繼續。但是,當它在完整循環後到達起始點時,第二個空間上的剩餘9個不會被\ r清除。什麼可能導致這個?
public class Core {
public static void main(String[] args) throws InterruptedException {
int Array[][] = new int[4][6];
int score;
boolean enemy = true;
boolean dir = true;
// EnemyLine
while (enemy) {
for (int i = 1;;) {
Thread.sleep(1000);
if (i == 1)
dir = true;
else if (i == 4)
dir = false;
if (dir == true) {
int a = Array[0][i] = 9;
System.out.printf("%" + i + "d", a);
i++;
System.out.print("\r");
continue;
} else if (dir == false) {
int a = Array[0][i] = 9;
System.out.printf("%" + i + "d", a);
i--;
System.out.print(" \r");
continue;
}
}
}
}
}
我在這裏沒有看到問題或問題(除了家庭作業問題)。在調試器/ IDE中運行它,並觀察所有變量和輸出窗口,以確定發生了什麼。或者,只需在紙面上(或在您的腦海中,它不是太複雜)穿過它。 – KevinDTimm
那麼問題是,在返回的腿\ r不清楚每9個。我無法找到是什麼原因導致這也是我在eclipse中寫入,並找不到錯誤。 (代碼在eclipse中並沒有像預期的那樣起作用,因爲它跳轉了一行,但是在終端中所有的輸出都發生在一行上) – heathbm
你的代碼中幾條無關的註釋: 你有'if(dir == true) {...} else if(dir == false){...}'因爲_dir_是一個布爾值,所以它只能是真或假,所以你的if..else可以是'if(dir == true){。 ..} else/* dir必須是false */{...}' 另外,不要測試'some_boolean == true'是否測試'some_boolean':'if(dir){...} else { ...} 這很混亂,因爲「dir」(方向?)沒有告訴你很多:'dir == true'是什麼意思?如果它意味着「向右移動」,虛假意味着「向左移動」,則將「dir」重命名爲「movingRight」......如果(movingRight){...} else {/ * left left * /}' –