如何从用户那里获得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;
}
}