对于此代码按预期运行使用您的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 * /}' –