我刚刚开始在Java中使用线程,而且我在线程中使用for循环时遇到了问题。
当我在线程中使用for循环时,由于某些原因我无法看到我发送到屏幕的输出。
当我使用while循环时,它就像一个魅力。
非工作代码如下:
public class ActionsToPerformInThread implements Runnable {
private String string;
public ActionsToPerformInThread(String string){
this.string = string;
}
public void run() {
for (int i = 1; i == 10 ; i++) {
System.out.println(i);
}
}
}
致电代码:
public class Main {
public static void main(String[] args) {
Thread thread1 = new Thread(new ActionsToPerformInThread("Hello"));
Thread thread2 = new Thread(new ActionsToPerformInThread("World"));
thread1.start();
thread2.start();
}
}
我的问题是:为什么当我用while-loop替换for-loop并尝试将相同的输出打印到屏幕上时它不起作用?
我尝试调试它,但似乎程序在到达打印部分之前停止了(没有异常或错误)。
答案 0 :(得分:2)
for (int i = 1; i == 10 ; i++) {
System.out.println(i);
}
你的意思是?
i <= 10
i == 10是1 == 10.它总是假的。
答案 1 :(得分:2)
你的 for loop 中有一个愚蠢的错字:
for (int i = 1; i == 10 ; i++) {
...
}
应该读作:
for (int i = 1; i <= 10 ; i++) {
...
}
答案 2 :(得分:0)
典型的 for循环在Java中如下所示:
//pseudo code
for( variable ; condition ; increment or decrement){
//code to be executed...
}
工作原理:
variable
(也可以在循环外声明)condition
,如果它是true
,则执行循环内的代码,否则如果第一次失败则甚至不会输入循环。increment or decrement
完成,然后第二步再次发生......
这会反复进行,直到condition
为false
,然后循环退出。在您的情况下,condition
为i == 10
,当然,由于i
仍然是1
并且尚未更改,因此第一次检查时失败了,因此for-loop中的代码甚至没有执行,根本没有输入循环。
要解决此问题:您需要将condition
更改为i <= 10
。通过这样做,你告诉循环“只要i
小于OR等于10就继续循环。”