4 回答

TA貢獻1860條經驗 獲得超9個贊
跑步前
else if ((i%3==0)&&(i%5==0)){ System.out.print("ApaBoleh,");}
它運行
if(i%3==0){ System.out.print("Apa,"); }else if (i%5==0){ System.out.print("Boleh,");
所以你必須把
else if ((i%3==0)&&(i%5==0)){ System.out.print("ApaBoleh,");}
在上面兩個之前

TA貢獻1876條經驗 獲得超6個贊
你有一個前面的兩個else都是; 僅輸入第一個。我會將測試保存到局部變量中,因為重復所有這些模數運算并不是很干凈。喜歡,iftrue
for (int i = 1; i <= 100; i++) {
? ? boolean mod3 = i % 3 == 0, mod5 = i % 5 == 0;
? ? if (mod3 && mod5) {
? ? ? ? System.out.print("ApaBoleh,");
? ? } else if (mod3) {
? ? ? ? System.out.print("Apa,");
? ? } else if (mod5) {
? ? ? ? System.out.print("Boleh,");
? ? }
? ? System.out.print(i + ",");
}

TA貢獻1830條經驗 獲得超3個贊
這是因為您用來else排除該條件之前解析為 true 的任何內容。首先嘗試檢查最獨特的情況:
if (( i%3 == 0 ) && ( i%5 == 0 )){
System.out.print("ApaBoleh,");
}else if ( i%3 == 0){
System.out.print("Apa,");
}else if ( i%5 == 0){
System.out.print("Boleh,");
}
System.out.print(i+",");

TA貢獻1744條經驗 獲得超4個贊
當然它不會運行,當你的前兩個 if 條件之一評估為 時true,你將永遠不會到達該 if 塊。
例如,如果i = 3那么您的第一個條件if(i%3==0)將計算為true并且您的打印輸出Apa,因為其余條件是else ifjava代碼將停止處理并進入下一個循環迭代。類似地,如果i = 5那么第一個條件將計算為false,第二個條件if(i%5==0)將計算為true并且不會繼續到下一個條件else if
因此,如果您之前的任何一個條件評估為,true您將不會達到第三個條件。
除此之外,如果您必須刪除前面的兩個if語句并且僅按如下方式評估該條件:
public class ApaBoleh{
public static void main(String[]args){
for(int i=1;i<=100;i++){
if ((i%3==0)&&(i%5==0)){
System.out.print("ApaBoleh,");
}
System.out.print(i+",");
}
}
}
然后 ifi = 3它將計算為false因為它將計算i%3==0為true然后繼續計算i%5==0為false(true和false= false)。
然后 ifi = 15它將計算為true因為它將計算i%3==0為true然后繼續計算i%5==0為true(true和true= false)。
添加回答
舉報