由于数组问题导致的无限循环

时间:2013-11-13 02:55:42

标签: java arrays

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 个答案:

答案 0 :(得分:1)

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

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

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

(int b = 0;

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

b < days.length;

最后,第三部分确定每次迭代之间应该改变什么。但你的for循环缺少那一部分。它应该是......

b++)

编辑:

您遇到的第二个问题是,在编写代码时,这将不起作用。但我认为这将是一个让你弄清楚原因的练习。