Java 不在x co和xF6停车;协调
我用一个移动的块来做一些东西,直到它碰到x=11坐标。我尝试在while循环中执行while循环:Java 不在x co和xF6停车;协调,java,testing,if-statement,while-loop,Java,Testing,If Statement,While Loop,我用一个移动的块来做一些东西,直到它碰到x=11坐标。我尝试在while循环中执行while循环: public void run() { x = 200; y = 200; while (true) { if (left == true) { x -= 5; while (true) { if (x == 11) { left = fa
public void run() {
x = 200;
y = 200;
while (true) {
if (left == true) {
x -= 5;
while (true) {
if (x == 11) {
left = false;
}
}
}
if (up == true) {
y -= 5;
}
if (right == true) {
x += 5;
}
if (down == true) {
y += 5;
}
repaint();
try {
Thread.sleep(20);
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
但它并没有在x=11时停止,而是继续无限期地运行。
有人知道我还能怎么做吗?有没有带
while(true){
//any code that coesn't contain break
}
将永远运行
每次循环时,它都会执行循环中的代码,然后返回到行while(true)
,如果条件仍然为true(很明显将为true),则它会再次返回
这类循环(偶尔)具有合法用法,但必须在循环中的某个位置包含break;
才能退出它们
在您的例子中,两个循环都有这个问题,但内部循环就是它实际陷入的那个循环
while (true) {
if (x == 11) {
left = false;
}
}
通过它:
while (x>11){
x-=5;
if (x<11){
x==11;
}
}
while(x>11){
x-=5;
如果(x听起来你不希望你的方块移动到x=11以下。在这种情况下,试试:
if (left == true) {
if(x - 5 < 11){
x = 11;
}
else{
x -= 5;
}
}
if(left==true){
如果(x-5<11){
x=11;
}
否则{
x-=5;
}
}
试试看
如果这种情况下不知道您的条件格式正确(即缩进)代码在堆栈溢出时也会下降很多;define不起作用,永远运行?因为我会这么做expect@RichardTingle定义是什么?正如在实际问题中一样,不起作用可能是从计算机崩溃到在内部循环中给出错误答案使用while(左)
而不是true
。永远?如果我关闭javaw.exe怎么办?除非它有中断
或系统。退出循环中的某个地方,否则用户将关闭其进程:).不管怎样,既然你发现了让答案完整的问题,一些解决方案将是很好的。它将一直持续下去,直到你实际摧毁计算机。@TeunissenStefan是的,如果你强迫程序结束,它将结束,但它将“正常地”永远不会结束。@a_horse_,有_no_name yea,typo:)没有问题。接受它作为答案,而不是提及[已解决]在帖子中。不,谢谢。在其他网站上,我需要提到它已经解决了,但不在这里…。-@teunissentefan没问题,stack overflow不是常见的帮助论坛,它是一个问答网站,主要目标是生成对许多人有益的有用问题和答案。你的问题得到解决是一个愉快的额外机会nifit,但不是首要目标。感谢他人总是值得赞赏的
boolean isValid=false;
while(!isValid){
if(left==true)
{
x -= 5;
if(x ==11)
{
left=false;
isValid=true;
}
}
}