在java中的do-while循环中出现Endless嵌套for循环的问题

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

我正在为我的高中成绩编写一个实验室代码。SCI。类。该程序的目标是从一个文件中读取数据,一次一个整数,并打印一个倒三角形。

数据是一个txt文件,格式为:3 3 7 4

然后我把.txt扩展改为.dat

它应该打印一个倒三角形,顶行为3,每一行的星号少一个(同样,我不知道如何格式化它)。我试过了,但没用)。如果int为3,则顶行为3;如果int为7,则顶行为7等。

我不知怎么地陷入了一个嵌套的for循环中,尽管我有一个递减操作符,它最终应该使循环终止,但是它没有。你会看到完全的怪异。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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();
    }      
}

当编译器到达嵌套for循环中的docx1(2)行时,在我手动终止程序之前,它会一直变为负50000,为了好玩,我让它变为-200000。我不明白为什么它不简单地终止。我盯着Eclipse看了10分钟,尝试了各种各样的东西,但我不知道出了什么问题。


您的主for循环是以与a减少相同的速率减少x,因此x永远不会大于a,从而导致无限for循环。


您在第一个"for"中有此评估:

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

"x"总是小于a。

必须是没有双引号的for(int x = 1; x <= a; x++)