對(duì)于下面這個(gè)Java程序,關(guān)于for循環(huán)語句的兩個(gè)問題。
public class HelloWorld
{
??? public static void main(String[] args)
??? {
?? ??? ?int sum = 0; // 保存不能被3整除的數(shù)之和
?? ??? ?
?? ??? ?// 循環(huán)變量 i 初始值為 1 ,每執(zhí)行一次對(duì)變量加 1,只要小于等于 100 就重復(fù)執(zhí)行循環(huán)
?? ??? ?for (int i = 1;i<=100;)
??????? {
?? ??? ??? ?
?? ??? ??? ?// 變量 i 與 3 進(jìn)行求模(取余),如果不等于 0 ,則表示不能被 3 整除
?? ??? ??? ?if (i % 3 != 0)//And here
??????????? {
?? ??? ??? ??? ?sum = sum + i; // 累加求和
??????????????? i++;//Here
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ??? ?System.out.println("1到100之間不能被3整除的數(shù)之和為:" + sum);
?? ?}
}
1、i的自增不應(yīng)該是在求和之后嗎?i++放在括號(hào)里邊,在求和之前數(shù)值就發(fā)生改變了啊。 2、在if判斷條件后面,當(dāng)i等于3的倍數(shù)的時(shí)候,i%3!=0就為假了,程序會(huì)怎么執(zhí)行?
2016-08-07
首先第一個(gè)問題是,for循環(huán)里面的i++是先引用再增加的,你調(diào)試代碼就可以發(fā)現(xiàn),for循環(huán)第一個(gè)i的值是你最開始賦值的;后面才會(huì)在每次循環(huán)開始的時(shí)候增加。
第二個(gè)問題是,當(dāng)i等于3的倍數(shù)的時(shí)候,條件為假了,就不會(huì)進(jìn)入if后面的語句,程序當(dāng)然會(huì)繼續(xù)往下執(zhí)行下去,直到走完這次循環(huán)。
2016-08-07
你也是厲害。都不想說了。
2016-08-07
首先 你的i++自增應(yīng)該放在for循環(huán)里邊 你會(huì)明白為什么的 如果你這樣寫。
第二 當(dāng)if(i%3!=0)為假時(shí),條件語句不執(zhí)行,直接跳過{},執(zhí)行后邊的語句。
2016-08-07
1、第二個(gè)i++去掉
2、然后條件家的時(shí)候是不執(zhí)行里面內(nèi)容
3、這都是基礎(chǔ)啊