问题是:
编写一个程序,提示用户输入5个数字并找到 其中两个最大的值。如果用户输入的数字超过100 或者小于-100的程序应退出。
Hint: use break.
我的代码是:
import java.util.*;
public class q2 {
static Scanner scan = new Scanner (System.in);
public static void main (String[] args ) {
int num;
int max=0;//define Maximum value and save it in variable max = 0;
int secondMax=0;//define the second maximum value and save it in variable secondMax = 0;
System.out.println("Please , Enter 5 numbers between 100 and -100 "); //promet user to enter 5 numbers with the condition
for (int count=0 ; count<5 ; count++) // start loop with (for)
{
num = scan.nextInt();//user will enter number it will be repeated 5 times .
if( num > 100 || num<-100) //iv the user enter a number less than -100 or geater than 100 program will quit from loop
{
System.out.println("The number you have entered is less than -100 or greater than 100 ");//telling the user what he did
break;//End the loop if the condition ( num > 100 || num<-100) is true .
}
if(num>max )//Another condition to find the maximum number
max = num;//if so , num will be saved in (max)
if (num >= secondMax && num < max)// A condition to find the second Maximum number
secondMax = num;//And it will be saved in (secondMax)
}//End loop
System.out.println("The largest value is " + max); //Print the largest number
System.out.println("The second largest value is " + secondMax );//print the second largest number .
}//End main
}//End class
这是我的代码输出的内容:
Please , Enter 5 numbers between 100 and -100
20
30
60
20
-10
The largest value is 60
The second largest value is 20
第二大数字不正确 - 20,而不是30.我做错了什么?
答案 0 :(得分:3)
可能有两种情况,
试试这个
if(num>secondMax&&num<max) // case 2
{
secondMax = num
}
else if(num>max) // case 1
{
secondMax = max;
max = num;
}
答案 1 :(得分:0)
如果将最高的数字替换为更高的数字,那么前者最大的数字将成为第二大数字(因为它仍然大于前者的第二大数字)。您的代码没有反映出来。 每次更改最大的nubmer时,将第二个设置为旧的最大nubmer。
答案 2 :(得分:0)
if(num>max )//Another condition to find the maximum number
secondMax = max;
max = num;//if so , num will be saved in (max)
else if (num >= secondMax)// A condition to find the second Maximum number
secondMax = num;//And it will be saved in (secondMax)
答案 3 :(得分:0)
在最大数量变化首先保存前一个最大值而不是分配新最大值的情况下,如果小于该数量,则应调整第二个最大值。
if(num>max ){//Another condition to find the maximum number
secondmax = max;
max = num;//if so , num will be saved in (max)
} else if (num > secondmax) {
secondmax = num;
}