如何从用户那里得到10个数字并打印出两个最大值



如何从用户那里获得10个数字并打印出两个最大值??我试着编写一个程序,从用户那里获取10个数字……在它取10个数字后,它会显示你输入的最大数字,并显示在最大数字之前的数字(你输入的10个数字中的两个最高数字)。我不知道为什么它不起作用…谢谢大家!!

import java.util.Scanner;

    public class E11 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner scan = new Scanner(System.in);  
            System.out.println("Enter Number " +0 +" : " );
            float scanNumTwo = scan.nextFloat();
            float scanNum = scanNumTwo;
            float lastscan ;
            float maxim = scanNumTwo;
            float lastmax = scanNumTwo;
            for(int i = 1 ; i<=9 ; i++){
                System.out.println("The Last Max " +lastmax +" : " );
                System.out.println("The Maximum Numer Is : "+maxim);
                System.out.println("Enter Number " +i +" : " );
                lastscan = scanNum;
                scanNum = scan.nextFloat();
                if(lastscan >= scanNum && lastscan >= maxim){
                    maxim = lastscan;
                }
                else if(scanNum >= lastscan && scanNum >= maxim){
                    maxim = scanNum;
                }
                else if (scanNum>lastscan && maxim>lastmax){
                    lastmax = lastscan;
                }
                else if (scanNum>lastmax && maxim>lastmax){
                    lastmax = scanNum;
                }
                System.out.println("The Maximum Numer Is : "+lastmax);
                System.out.println("The Maximum Numer Is : "+maxim);


        }
            System.out.println("The Maximum Numer Is : "+lastmax);
            System.out.println("The Maximum Numer Is : "+maxim);

        }
    }

您需要跟踪两个最大的数字。你可以这样初始化它们:

float maxNumb = scan.nextFloat();
float secondMax = scan.nextFloat();
if (secondMax > maxNumb) {
   float temp = maxNumb;
   maxNumb = secondMax;
   secondMax = temp;
}

之后,您可以扫描所有数字(为了方便阅读,不包括打印):

for (...) {
   float next = scan.nextFloat();
   // if greater than max, then it's the new max and the old max is the 2nd
   if (next > maxNumb) {
     secondMax = maxNumb;
     maxNumb = next;
   }
   // if it's only greater than the second, then it's the new second.
   else if (next > secondMax) {
     secondMax = next;
   }
}

最新更新