有 Java 编程相关的问题?

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

数组问题导致java无限循环

public class trothBrthdays {

    public static void main ( String args [] ) {
        Random day = new Random();
        int days[] = new int[366];
        int smallest = 0;
        int largest = 885000;

        for (int i = 1; i <= 885000; i++)
        {
            int persons = day.nextInt(365) + 1;
            days[persons] += 1;
        }
        for (int a = 1; a <= 365; a++)
        {
            System.out.printf ( " \nDay %d: %d ", a, days[a]);
        }

在这里,程序可以找到生日最多的一天

        for (int b = 0; b < days.length;)
        {
            if(days[b] > smallest)
            {
                largest = days[b];
                System.out.printf ( "\nLargest: %d ", days[b]);
            }
        }

在这里,程序查找生日最少的日期

        for (int c = 0; c > days.length;)
        {
            if (days[c] < largest)
            {
                smallest = days[c];
                System.out.printf ( "\nSmallest: %d ", days[c]);
            }
        }
    }
}

问题是当程序找到最大的数时,它会无限循环最大的数,我不知道为什么。我仍然是一个初学者程序,我喜欢对如何格式化和键入这个程序提出建设性的批评


共 (1) 个答案

  1. # 1 楼答案

    发生这种情况的原因是因为您的for循环:

    for (int b = 0; b < days.length;)
    

    for循环的构造分为三个部分。第一部分是迭代器的声明:

    (int b = 0;
    

    第二部分是断裂条件。也就是说,必须满足什么条件,否则循环将中断

    b < days.length;
    

    最后,第三部分确定在每次迭代之间应该更改什么。但您的for循环缺少该部分。应该是

    b++)
    

    编辑:

    您遇到的第二个问题是,在编写代码时,这将不适用于代码。但我想这将是一个练习,让你找出原因