使用Java查找最小的两个数字 -

时间:2017-06-16 05:28:26

标签: java

所以我有一个任务,我需要找到使用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();
    }       
}
}

我觉得我为一个简单的问题写了太多代码。

2 个答案:

答案 0 :(得分:1)

正如你在问题中所述,这是一项家庭作业,所以人们不愿意给你答案。如果你想在一组中找到最小的2个数字,如果你想要比较两个数字并返回最小数字,那么你的问题有点令人困惑。这是每个

的高级方法

在集合中找到2个最小的数字

  • 将所有数字放入数组中。
  • 排序数组。
  • 返回array[0]array[1]

比较两个数字并返回最小

  • 声明接受两个参数ab
  • 的函数
  • 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);