簡體   English   中英

為什么for循環要在我的Java程序中迭代超過給定條件

[英]Why for loop is iterating more than given condition in my Java program

我正在嘗試使用for循環(具有迭代次數)來查找整數的因式分解,但輸出大於指定的循環數。

我在筆記本電腦上編寫了相同的代碼,但是在特定的迭代次數下並且在不超過一定數量的情況下,它可以正常工作。

public class Test {
    public static void main(String args[]) {
        int n=5;
        for(int a=1; a<=n; a++ ) {
            n=a*n;
            System.out.println(n);
        }
    }
}

產量

5
10
30
120
600
3600
25200
201600
1814400
18144000
199584000
-1899959296

您正在循環中更改n的值,因此要進行更多的迭代。 使用另一個變量來計數循環,例如

public class Test {
    public static void main(String args[]) {
        int n=5, counter=5;
        for(int a=1; a<=counter; a++ ) {
            n=a*n;
            System.out.println(n);
        }
    }
}

我想您正在尋找類似的東西:

1*n = n
2*n = 2n

... ... ...

(n-1)*n = n(n-1)
n*n = n^2

因此,部分結果就像a*n ,其中n是固定的,並且a增加1直到n 在您的代碼中,您放置了n=a*n ,這意味着您的n在每次迭代中都在更新。 不要更新n的值,即刪除包含n=a*n 實際上,您也不需要counter變量。 只需將a*n的值打印到print語句中。 因此,解決方案可能是

public class Test {
    public static void main(String args[]) {
        int n=5;
        for(int a=1; a<=n; a++ ) {
            System.out.println(a*n);
        }
    }
}

//感謝您的幫助,我得以找出問題所在///這就是我克服限制迭代次數的方法/

public class Test {
public static void main(String args[]) {
    int n=5;
    int counter=n;

    for(int a=1; a<=counter; a++ ) {
        n=a*n;
    System.out.println(n);
    }
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM