int cnt = 0, sum = 0;
for(int i = 1; ((i <= 1000) && (i%3 == 0) && (i%5 == 0)); i ){
if(cnt >= 5)
break;
System.out.println(i);
sum = i;
cnt ;
}
System.out.println(sum);
我想獲得前 5 個可被 3 整除的數字以及 [1, 1000] 范圍內的 5。此代碼沒有顯示任何錯誤,但它會將“sum”和“cnt”都回傳為其默認值(即 0),并且在我看來它沒有進入 for 回圈。
PS我不是高級程式員。我正在嘗試這些東西只是為了探索,所以如果有人能解釋這背后的實際原因。
uj5u.com熱心網友回復:
聽起來你不明白 for 回圈是如何作業的。@Silvio Mayolo并@experiment unit 1998X評論了一些非常有用的鏈接。我會鼓勵你通讀這些并熟悉它們。
在您的示例中,您的 for 回圈有一個非常復雜的標題。
for(int i = 1; ((i <= 1000) && (i%3 == 0) && (i%5 == 0)); i ){
讓我們把它分成幾個部分。
for-- 這是啟動 for 回圈的關鍵字int i = 1;-- 現在您已經在回圈中創建了一個變數。它是一個int被呼叫i的,它的起始值為1。(the termination expression)-- 如果終止運算式回傳false,則回圈停止回圈。讓我們看看你是如何使用它的i <= 1000-- 現在您已經添加了一條規則 --> 為了讓 for 回圈執行回圈,數字i必須小于或等于1000. 好的,這很簡單,到目前為止,您現在至少有 1000 個有效值i。i%3 == 0-- 現在您添加了另一條規則 --> 為了讓回圈執行回圈,該數字在除以 3 時必須沒有余數。不幸的是,這是一個問題,因為如前所述,i您的起始值為i,并且11/3確實有余數。因此,回圈甚至在它開始之前就停止了。
這是你的問題。如果你想檢查是否i%3 == 0,你不應該把檢查放在你的終止運算式中。它應該進入 for 回圈內的封閉塊內部。這同樣適用于i%5 == 0.
這是一個可運行的示例,可以幫助您理解。
public class SOQ_20220516
{
public static void main(String[] args)
{
int cnt = 0;
int sum = 0;
for(int i = 1; i <= 1000; i )
{
if(cnt >= 5)
{
break;
}
if ((i%3 == 0) && (i%5 == 0))
{
System.out.println(i);
sum = i;
cnt ;
}
}
System.out.println(sum);
System.out.println(cnt);
}
}
uj5u.com熱心網友回復:
公共類 SOQ_20220516 {
公共靜態無效主要(字串[]引數){
int cnt = 0;
int sum = 0;
for(int i = 1; i <= 1000; i )
{
if(cnt >= 5)
{
break;
}
if ((i%3 == 0) && (i%5 == 0))
{
System.out.println(i);
sum = i;
cnt ;
}
}
System.out.println(sum);
System.out.println(cnt);
}
}
塊參考
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477568.html
上一篇:使用帶有for回圈c 的類n次
