亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

這樣寫哪里出錯了

public class HelloWorld {

? ? public static void main(String[] args) {

int sum=0;

for (int i=1;i<=100 && i%3!=0;i++){

? ?sum=i+sum;

? ?System.out.println("100以不能被3整除的數之和:"+sum);

}

}

}


現在結果是這個

00以不能被3整除的數之和:1
100以不能被3整除的數之和:3

? ?public static void main(String[] args) {

int sum =0;

for (int i=1;i<=100;i++){

if (i%3!=0){

sum=i+sum;

System.out.println("100以不能被3整除的數之和:"+sum);

}

}

? ?}

}

這兩個結果為啥不一樣

正在回答

7 回答

因為你第一個寫法i<=100 && i%3!=0,在i累加到=3時,判斷FALSE 循環已經跳出了 sum自然=3


0 回復 有任何疑惑可以回復我~

int sum = 0;
??for (int i = 0; i <= 100 && i%3 != 0; i++) {
???sum +=i;
???System.out.println("100內以不能被3整除的整數之和:" + sum);
??}

for循環的執行順序:
???1、先執行:int = 0;
???2、執行條件表達式:i<=100 && i%3 != 0;
???3、如果第2步成立,執行sum += i;
????如果不成立,直接跳出循環,循環結束
???4、執行完第3步,接著執行i++;
???5、再執行 i<=100 && i%3 != 0;
???6、如果第5步成立,執行sum += i;
????如果不成立,直接跳出循環,循環結束
???7、執行i++,依次類推。。。

????在上述循環中,循環執行到第2步的時候就跳出循環了,因為此時i = 0, 0%3=0,0對任意數取余結果都是0,條件表達式 0<=100 && i%3!=0 結果為false,直接跳出循環。


int sum = 0;
??for (int i = 1; i <= 100; i++) {
???if (i%3 != 0) {
????sum += i;
????System.out.println("100內以不能被3整除的整數之和:" + sum);
???}
??}
??
??/*?
?此循環的執行順序:
??
??i的值??? 循環條件表達式?? if條件表達式?? sum的值????
??i = 1;???? ?i <= 100;??? ???? i%3 != 0;? ??? ?????? sum+=i;????????? ?i++
??1 ;??????? 0<=100 成立, ??? 1%3=1 成立,??? sum=0+1=1??? ?i++;
??2 ;??????? 2<=100 成立,? ?? 2%3=2 成立,????? ?sum=1+2=3??? ?i++;
??3 ;?????? ?3<=100 成立, ?3%3=0 不成立??? ?跳過此步??????????? i++;
??4 ;?????? ?4<=100 成立?? ?? 4%3=1 成立?? ??? sum=3+4=7???? ?i++;
??...依次類推,直到i<=100不成立的時候才跳出循環,也就是說當i=101的時候,循環終止

能寫的都給你寫上了,只能幫到這了...?
??*/


0 回復 有任何疑惑可以回復我~

跳出for循環的條件不一致。

?i<=100 && i%3!=0和i<=100能一樣嗎?

0 回復 有任何疑惑可以回復我~

http://img1.sycdn.imooc.com//5947a6710001e38f06280355.jpg寫的不好 下班了 著急 將就看吧

1 回復 有任何疑惑可以回復我~

public class HelloWorld {


public static void main(String[] args) {

int sum=0;

for (int i=1;i<=100 && i/3!=0;i++){//你將i/3不等于0放在里面他直接就跳出循環了啊(1/3=1?。詻]有輸出

? sum=i+sum;

? System.out.println("100以不能被3整除的數之和:"+sum);

}

//下面是根據你的意思完成的功能

for (int i=1;i<=100;i++){

if (i % 3 == 0) {

continue;

}

? sum=i+sum;

??

}

System.out.println("100以不能被3整除的數之和:"+sum);

}


}


0 回復 有任何疑惑可以回復我~

應該改成for循環語句

0 回復 有任何疑惑可以回復我~
#1

慕數據6417455 提問者

改成for也不行 就直接沒結果 沒錯誤提示
2017-06-19 回復 有任何疑惑可以回復我~

把if改成for試試呢

0 回復 有任何疑惑可以回復我~
#1

慕數據6417455 提問者

額。。這個我自己寫的沒注意 改成for也不行 就直接沒結果 沒錯誤提示
2017-06-19 回復 有任何疑惑可以回復我~
#2

奔跑的兔斯基 回復 慕數據6417455 提問者

換問題了?你這第一個程序走下來是這樣的,首先i=1,帶進來符合循環的條件,所以這個時候sum=1+0;輸出的第一個結果就是1;然后i++,這個時候i=2帶進來,符合循環條件,sum=i+sum=2+1=3,輸出的第二個結果就是3;接下來就是i=3,不符合循環條件,因為條件中有i%3!=0,而3%3=0,所以跳出循環,over
2017-06-22 回復 有任何疑惑可以回復我~
#3

亂七八糟的代碼 回復 奔跑的兔斯基

正解?。?!
2017-07-09 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第一季(IDEA工具)升級版
  • 參與學習       1167478    人
  • 解答問題       18748    個

0基礎萌新入門第一課,從Java環境搭建、工具使用、基礎語法開始

進入課程

這樣寫哪里出錯了

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號