无法使用不带数组的while循环显示第三个最大数字

时间:2017-09-08 15:23:15

标签: java while-loop

我的代码要求用户输入三个数字,它应该显示您输入的第三个数字。我已经对此代码进行了至少一小时的故障排除,但无济于事。

import java.util.Scanner;

public class thirdLargest {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int largest = 0;
        int secondLargest = 0;
        int thirdLargest = 0;

        int counter = 0;
        int number;

        while (counter < 4) {
            System.out.println("Enter a number");
            number = input.nextInt();

            if (number > largest) {
                number = largest;
                largest = secondLargest;
            } else if (number > secondLargest) {
                number = secondLargest;
                secondLargest = thirdLargest;

            } else if (number > thirdLargest) {
                thirdLargest = number;
            }
            counter++;
        }
        System.out.println("Third largest number is " + thirdLargest);
    }
}

这是输出

  

输入数字
  99个
  输入数字
  88个
  输入数字
  77个
  输入数字
  66个
  输入数字
  55个
  第三大数字是0

     

处理完成,退出代码为0

2 个答案:

答案 0 :(得分:0)

尝试

1)将用户输入存储在int

的ArrayList中

2)使用Collection.Sort(yourList)

对数组进行排序

3)打印列表中的第一个元素yourlist.get(0)

public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int number;

ArrayList al = new ArrayList();

for(int i=0; i<3; i++){
    System.out.println("Enter a number");
    number=input.nextInt();
    al.add(number);
}
Collection.Sort(al);
int largest= al.get(2) ;
int secondLargest= al.get(1);
int thirdLargest= al.get(0);
System.out.println("Third largest number is "+thirdLargest);

}

答案 1 :(得分:0)

我相信以下代码将使用您的逻辑,没有数组。虽然我没有运行它。

import java.util.Scanner;

public class thirdLargest {

public static void main(String[] args) {
    Scanner input=new Scanner(System.in);
    int largest=0;
    int secondLargest=0;
    int thirdLargest=0;

    int counter=0;
    int number;

    while(counter<4){
        System.out.println("Enter a number");
        number=input.nextInt();
        if (number > largest){
            thirdLargest = secondLargest;
            secondLargest = largest;
            largest = number;
        }
        else if (number > secondLargest){
            thirdLargest = secondLargest;
            secondLargest = number;
        }
        else if (number > thirdLargest){
            thirdLargest = number
        }

    }

    System.out.println("Third largest number is "+thirdLargest);
}