数组中第二小的数字 - 不正确的输出
Second smallest number in array - incorrect output
所以这已经困扰了我一个半小时,而且真的很烦人。我不确定问题出在哪里,因为我已经多次重新检查我的代码,我已经用谷歌搜索并搜索了其他方法,或者如果我做错了什么,我仍然没有看到任何东西。
这是我的代码的摘录:
// MAX AND MIN NUMBER
int maxnum = array[0];
int minnum = array[0];
for (int i = 0; i < array.length; i++) {
if (array[i] > maxnum) {
maxnum = array[i];
} else if (array[i] < minnum) {
minnum = array[i];
}
}
System.out.println("Maximum number is " + maxnum + ", minimum is " + minnum + ".");
// --------------------------------------------------------------------------------
// SECOND SMALLEST NUMBER
int secondnum = array[0];
for (int i = 0; i < array.length; i++) {
if (array[i] == minnum) {
secondnum = minnum;
} else if (array[i] < minnum) {
secondnum = minnum;
minnum = array[i];
} else if (array[i] < secondnum) {
secondnum = array[i];
}
}
System.out.println("Second smallest number is " + secondnum + ".");
array[i] 是来自用户的输入。一开始,程序会要求您输入要输入的数字数量,然后您继续输入。
我输入了五个,我输入了五个数字,但我的第二小数字与我最小的数字相同。有时我会得到正确的答案。
有什么想法吗?
编辑:
在 user3591111 的帮助下工作。谢谢!
第一个你可以从i =1开始第二个试试
int secondnum = maxnum;
for (int i = 0; i < array.length; i++) {
if (array[i] != minnum && array[i] <secondnum )
secondnum = array[i];
}
如果你有重复的数字,这将不起作用,因为你的小号可以等于你的第二个小号,因为你需要存储你的小号的位置,并在 if 中更改为 if ((array[i] != minnum || smallPos != i) && array[i] <secondnum )
所以这已经困扰了我一个半小时,而且真的很烦人。我不确定问题出在哪里,因为我已经多次重新检查我的代码,我已经用谷歌搜索并搜索了其他方法,或者如果我做错了什么,我仍然没有看到任何东西。
这是我的代码的摘录:
// MAX AND MIN NUMBER
int maxnum = array[0];
int minnum = array[0];
for (int i = 0; i < array.length; i++) {
if (array[i] > maxnum) {
maxnum = array[i];
} else if (array[i] < minnum) {
minnum = array[i];
}
}
System.out.println("Maximum number is " + maxnum + ", minimum is " + minnum + ".");
// --------------------------------------------------------------------------------
// SECOND SMALLEST NUMBER
int secondnum = array[0];
for (int i = 0; i < array.length; i++) {
if (array[i] == minnum) {
secondnum = minnum;
} else if (array[i] < minnum) {
secondnum = minnum;
minnum = array[i];
} else if (array[i] < secondnum) {
secondnum = array[i];
}
}
System.out.println("Second smallest number is " + secondnum + ".");
array[i] 是来自用户的输入。一开始,程序会要求您输入要输入的数字数量,然后您继续输入。 我输入了五个,我输入了五个数字,但我的第二小数字与我最小的数字相同。有时我会得到正确的答案。 有什么想法吗?
编辑: 在 user3591111 的帮助下工作。谢谢!
第一个你可以从i =1开始第二个试试
int secondnum = maxnum;
for (int i = 0; i < array.length; i++) {
if (array[i] != minnum && array[i] <secondnum )
secondnum = array[i];
}
如果你有重复的数字,这将不起作用,因为你的小号可以等于你的第二个小号,因为你需要存储你的小号的位置,并在 if 中更改为 if ((array[i] != minnum || smallPos != i) && array[i] <secondnum )