繁体   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