有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中dowhile循环中无限嵌套forloops的问题

我正在为我的高中毕业设计一个实验室。sci。班该程序的目标是从文件中读取数据,一次读取一个整数,然后打印一个倒三角形

数据是一个txt文件,带有:3 3 7 4(在文件中,数据垂直排列,3在顶部,但由于某些原因,我无法在此处格式化)

然后我将.txt扩展名更改为.dat

它应该打印一个倒三角形,最上面的一行是3,每个连续的一行少一个星号(同样,我不知道如何格式化这个。我试过了,但没有成功)。如果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();
    }       
}

当编译器到达嵌套for循环中的SOP(b);行时,在我手动终止程序之前,它会一直变为负50000,为了好玩,我让它变为-200000。我不明白它为什么不干脆终止。我盯着eclipse看了10分钟,尝试了各种各样的东西,但我想不出哪里出了问题


共 (2) 个答案

  1. # 1 楼答案

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

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

    “X”总是小于a

    它必须是for(int x = 1; x <= a; x++),不带双引号

  2. # 2 楼答案

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