Java 数组问题导致无限循环 公共类trothBrthdays{ 公共静态void main(字符串参数[]){ 随机日=新随机日(); 整数天[]=新整数[366]; int=0; int最大=885000; 对于(int i=1;i天.长度;) { 如果(天[c]
问题是当程序找到最大的数时,它会无限循环最大的数,我不知道为什么。我仍然是一个初学者程序,希望对如何格式化和键入该程序提出建设性的批评。之所以会出现这种情况,是因为您的for循环:Java 数组问题导致无限循环 公共类trothBrthdays{ 公共静态void main(字符串参数[]){ 随机日=新随机日(); 整数天[]=新整数[366]; int=0; int最大=885000; 对于(int i=1;i天.长度;) { 如果(天[c],java,arrays,Java,Arrays,问题是当程序找到最大的数时,它会无限循环最大的数,我不知道为什么。我仍然是一个初学者程序,希望对如何格式化和键入该程序提出建设性的批评。之所以会出现这种情况,是因为您的for循环: for (int c = 0; c > days.length;) { if (days[c] < largest) { smallest = days[c];
for (int c = 0; c > days.length;)
{
if (days[c] < largest)
{
smallest = days[c];
System.out.printf ( "\nSmallest: %d ", days[c]);
}
}
}
}
第二部分是断裂条件。也就是说,必须满足什么条件,否则循环将中断
(int b = 0;
编辑:
您遇到的第二个问题是,在编写代码时,这将不适用于代码。但我想这将是一个练习,让您找出原因。您的代码格式糟糕,但在底部部分,b和c并没有递增。然而,您并没有真正提出问题——只是展示了代码。您的标记误导了您编写循环的方式,为什么您希望它会终止?代码实际上有两个问题,但我的回答至少解决了无限for循环问题:3I最初使用的是b++),但当我使用程序的最大部分时,只需重述所有随机生成的数字。这将是您必须解决的第二个问题。仔细查看循环中的
if
语句。可以将中断条件放在循环体中-因为for循环中不需要迭代步骤(事实上,它们都不需要)-但是,否则,您就很正确了。因此,如果我正确地阅读了代码,if语句会声明天[b]将始终大于最小值,因此它会无限循环,这就是问题所在。我想不出一个解决的办法,但似乎我应该知道。所以。你说得对days[b]
始终大于minimable
(因为minimable==0
),当if语句命中时,它将把最大的设置为days[b]
。但是接下来会发生什么呢?最小的没有改变。。。所以现在你做了完全相同的比较,同样的事情发生了!这也是它下面的循环中的一个问题。
for (int c = 0; c > days.length;)
{
if (days[c] < largest)
{
smallest = days[c];
System.out.printf ( "\nSmallest: %d ", days[c]);
}
}
}
}
for (int b = 0; b < days.length;)
(int b = 0;
b < days.length;
b++)