要求用户输入第二大和最大数字的java程序

//java program that asks user to input a number and print the 1st and 2nd largest numbers import java.util.Scanner; public class twolargestnum { public static void main(String args[]) { Scanner input=new Scanner(System.in); int largest_2=0; //initializes second number int largest=0; //initializes first number int number; int counter=0;//initializes counter while(counter<10) { System.out.println("enter the number:"); number=input.nextInt();//prompts user if(largest<number){ largest=number;//stores number to largest largest_2=largest;}//stores largest to second largest or largest_2 else{ if(largest_2largest_2) largest_2=number; //stores second largest to number } counter=counter+1;//counts number input 10 times } System.out.println("The first largest number is " +largest);//displays largest number inputed System.out.println("The second largest number is " +largest_2);//displays second largest number inputed } } 

产量

 enter the number: 99 enter the number: 88 enter the number: 77 enter the number: 66 enter the number: 55 enter the number: 44 enter the number: 33 enter the number: 22 enter the number: 11 enter the number: 10 The first largest number is 99 The second largest number is 99 

如您所见,程序显示第二大数字为99而不是88.我做错了什么?

至少交换这两行:

  largest=number;//stores number to largest largest_2=largest;//stores largest to second largest or 

在更新largest之前,您需要将largest更改为largest

这是一个经典的错误。

 largest = number; largest_2 = largest; 

实际上,当您执行第一个操作时,您实际上正在更改(删除)存储的最大值。 @Ishamael说你需要切换这两个语句是正确的。 逻辑是您将最大值更改为数字 (删除旧的最大值),然后尝试将新变量( maximum_2 )分配给已删除的值。 在更改其值之前,您需要使用maximum_2来保存最大值。