输入系列,哪个是最大的和第二大的?

时间:2017-10-31 18:06:41

标签: java

我可以输出程序:

输入一系列正整数(-1表示停止): 输入数字#1:5 输入数字#2:6 输入数字#3:8 输入数字#4:74 输入数字#5:75 输入数字#6:-1

但我不能让它停在-1并且它无法显示最大和第二大数字,有人可以解释我错误在哪里吗?

{{1}}

3 个答案:

答案 0 :(得分:0)

您的代码有很多错误。首先,您打印两次相同的变量吗? 以下是一个代码,用于实现最大和第二大,而无需在数组中存储输入。

public static void main (String [] args){
    int number = 0, largest = 0, secondLargest = 0, count = 0;
    Scanner scanner = new Scanner(System.in);
    do {
        System.out.print("Enter number #"+ count++ +": ");
        number = scanner.nextInt();
        secondLargest = Math.max(secondLargest, number);
        if(largest < number) {
            secondLargest = largest;
            largest = number;
        }
    } while(number >= 0);
    System.out.println("The largest number entered is: "+largest);
    System.out.println("The second largest number entered is: "+secondLargest);

    scanner.close();
}

评论是否需要对其进行解释。

答案 1 :(得分:0)

一些注意事项

  1. 考虑承认你的作业需要帮助。
  2. 在编写程序之前考虑设计程序。
  3. 设计

    1. 得到一些数字,当你得到-1时停止。
    2. 停止后,对数字进行排序。
    3. 排序后,显示前两位。
    4. 每次输入数字时排序都很糟糕。

      设计注意事项:

      1. 不要使用阵列,你不是小丑。
      2. 将数字存储在Set中。这将删除重复项。
      3. 用户输入-1后创建一个列表。将Set中的AddAll添加到列表中。
      4. 将列表从最大到最小排序。
      5. 显示前两个元素。

答案 2 :(得分:0)

你的程序并没有停留在-1,而是等待另一个输入,因为你在离开之后再次调用sc.nextInt()

我认为最简单的方法是在列表中写下所有数字,直到达到-1,然后浏览列表并搜索最大和第二大数字。

以下是一个例子:

public static void main(String[] args) {
    int number = 0;
    int numberCount = 1;
    System.out.println("Enter a series of positive integers (-1 to stop): ");

    List<Integer> numbers = new ArrayList<>();
    Scanner sc = new Scanner(System.in);
    while (number >= 0) {
        System.out.print("Enter number #" + numberCount++ + ": ");
        number = sc.nextInt();
        numbers.add(number);
    }

    int largest = numbers.get(0);
    int secondLargest = numbers.get(0);
    int smallest = Integer.MAX_VALUE;
    for (int i = 1; i < numbers.size(); i++) {
        Integer currentNumber = numbers.get(i);
        if (currentNumber >= largest) {
            secondLargest = largest;
            largest = currentNumber;
        } else if (currentNumber > secondLargest) {
            secondLargest = currentNumber;
        }
        if (currentNumber < smallest) {
            smallest = currentNumber;
        }
    }

    sc.close();
    System.out.println("The largest number entered is:" + largest);
    System.out.println("The second largest number entered is : " + secondLargest);
}