-2
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]);
            }
        }
    }
}

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

4

1 回答 1

1

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

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

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

(int b = 0;

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

b < days.length;

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

b++)

编辑:

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

于 2013-11-13T03:02:49.777 回答