所以我有一个任务,我需要找到使用java输入的两个数字中最小的一个。以下是说明:
输入一组正整数,以-1结尾作为哨兵。按顺序打印这些数字中的最小和第二小数。这两个数字可能彼此相等 - 参见下面的第二个例子。
您应检查在-1之前至少输入两个数字,以便始终存在最小和第二个最小数字。 (提示:在开始输入其余数字的循环之前,您可能需要分别输入前两个数字。)如果第一个或第二个数字为-1,则应调用IO.reportBadInput并暂停程序。 / p>
示例:
java TwoSmall
32个
11个
19个
7
-1
结果:7
结果:11
我完成了作业,但我想知道是否有更简单的方法:
这是我的代码:
public class TwoSmall
{
public static void main(String[]args){
int smallest,secondSmallest,temp = 0;
System.out.println("Please enter a number");
smallest = IO.readInt();
System.out.println("Please enter a number");
secondSmallest = IO.readInt();
// Used to sort intial two numbers
if (smallest>secondSmallest){
temp = smallest;
smallest = secondSmallest;
secondSmallest = temp;
}
if (smallest !=-1 && secondSmallest !=-1){
while (temp != -1){
System.out.println("Please enter a number");
temp = IO.readInt();
if (temp<smallest && temp != -1){
secondSmallest = smallest;
smallest = temp;
}else if (temp<secondSmallest && temp != -1){
secondSmallest = temp;
}
}
IO.outputIntAnswer(smallest);
IO.outputIntAnswer(secondSmallest);
}else {
IO.reportBadInput();
}
}
}
我觉得我为一个简单的问题写了太多代码。
答案 0 :(得分:1)
正如你在问题中所述,这是一项家庭作业,所以人们不愿意给你答案。如果你想在一组或中找到最小的2个数字,如果你想要比较两个数字并返回最小数字,那么你的问题有点令人困惑。这是每个
的高级方法在集合中找到2个最小的数字
array[0]
和array[1]
比较两个数字并返回最小
a
和b
if (a<b) return a;
if (b<a) return b;
else
他们是一样的! 答案 1 :(得分:0)
无论值多少,这都会为您提供较小数量的数字,而忽略空值(只需确保您的列表由相同类型的数字,整数,长整数,浮点数等组成)
smaller = Arrays.asList(3,6).stream()。filter(Objects :: nonNull).sorted()。findFirst()。orElse(null);