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]);
}
}
}
}
问题是当程序找到最大数字时,它无限循环最大数字,我无法弄清楚原因。我仍然是一名初级课程,并希望对如何格式化和打字这个课程进行建设性的批评。
答案 0 :(得分:1)
发生这种情况的原因是因为你的for循环:
for (int b = 0; b < days.length;)
for
循环的构建分为三个部分。第一部分是迭代器的声明:
(int b = 0;
第二部分是休息条件。也就是说,必须满足什么条件,否则循环中断。
b < days.length;
最后,第三部分确定每次迭代之间应该改变什么。但你的for循环缺少那一部分。它应该是......
b++)
编辑:
您遇到的第二个问题是,在编写代码时,这将不起作用。但我认为这将是一个让你弄清楚原因的练习。