簡體   English   中英

Java do-while循環中無限嵌套的for循環的問題

[英]Issue with Endless nested for-loops in do-while loop in java

我正在為我的高中班級編寫實驗室代碼。 科學 類。 該程序的目的是從文件中讀取數據,一次讀取一個整數並打印一個倒三角形。

數據是一個txt文件,其內容為:3 3 7 4(在文件中,數據垂直排列,頂部為3,但由於某種原因我無法在此處進行格式化)

然后,我將.txt擴展名更改為.dat

它應該打印一個倒三角形,第一行為3,每行連續的星號少1(同樣,我不知道該如何設置格式。我嘗試了,但沒有成功)。 如果int為3,則第一行為3;如果int為7,則第一行為7,依此類推。

即使我有我的減量運算符應該最終使循環終止,我還是以某種方式陷入了嵌套的for循環中,但是事實並非如此。 您將看到總的怪異。

public class Triangle2_PR31 
{

    public static void main(String[] args) throws IOException 
    { 
        Scanner triScan = new Scanner(new File("pr31.dat"));//reads file
        int a = triScan.nextInt();
        System.out.println(a);//prints number for verification 
        int b;//instantiate

        do
        {
            //a = triScan.nextInt();
            for(int x = 1; x<=a; x--)//main for-loop
            {
                for(b = a; b>=0; b--)//nested for-loop to print asterisks 
                {
                    System.out.print("*");
                    System.out.println(b);//print to see what happened to b
                }
                System.out.println(b);//print to see if loops gets out here
                a--;//decrease a so loop eventually terminates
                //Doesnt get out here
            }
        }       
        while(triScan.hasNext());
        triScan.close();
    }       
}

當編譯器到達SOP(b); 嵌套的for循環中的一行,在手動終止程序之前,事情一路變成負50,000,我讓它一次達到-200,000,這很有趣。 我不明白為什么它不能簡單地終止。 我凝視着日食10分鍾,嘗試各種不同的東西,但我不知道出了什么問題。

您在第一個“ for”中具有此評估:

for (int x = 1; x <= a; x--)

“ X”將始終小於a。

它必須為for(int x = 1; x <= a; x++)且不帶雙引號。

您的主要for循環以與a減少相同的速率減少x,因此x永遠不會比引起無限for循環的增長大。

暫無
暫無

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

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