2014-10-02 83 views
-2

我想看看我可以用for循环做些什么很酷的事情。 这里有一个简单的代码来打印在10_000和100_000之间可以被321整除的所有数字。这个java for循环有什么问题?

,但它不工作:

for(int i=10000;i<=100000 && i%321==0;i++){ 
    println(i); 
} 

是不是真的,我可以把第二和第三分号之间的条件语句? 这只是输出什么,所以我假设没有我值真。

+3

如果'I = 10000',确实'我321%== 0'? – 2014-10-02 03:14:40

+0

for循环的主体只有在条件为“true”时才会执行。 'i = 100000' _and_'i%321 == 0'会在'i = 10000'时变为真? – mkobit 2014-10-02 03:15:57

+0

*语法没有错,*只是说你的*条件*从来不是'真'。如果编译器会告诉你这个语法有什么问题。 – EJP 2014-10-02 03:23:19

回答

6

只要i % 321 == 0为假,该循环将立即停止,这将立即停止。尝试:

for (int i = 10000; i <= 100000; i++) { 
    if (i % 321 == 0) { 
    println(i); 
    } 
} 

或者:

for (int i = 10000 + (10000 % 321); i <= 100000; i += 321) { 
    println(i); 
} 
2

问题是与你的循环状态。

when (i = 10000) 

i % 321 = 10000 % 321 = 49 
So the condition i % 321 == 0, is false 

你需要尝试这样的事情,为了工作

for (int i = 10000; i <= 100000; i++) { 
    if (i % 321 == 0) { 
    println(i); 
    } 
}