我需要完成我的任务,但我被困在如此奇怪的地方。我几乎完成了所有代码,但是我在分配小值时遇到了问题。
但是当我键入数字5 15 26 68时。显示最大数字是68.最小数字是0。 我需要解决这个问题,但我不能。 你能帮我解决一下吗?
String str; // to hold input string
int a; // for convert string to int
int max = 0; // max and min assigned to min/max values.
int min = 0;
Scanner input = new Scanner(System.in); // Create a Scanner object to read input.
boolean can = true; //boolean loop
// Get the user's input.
while (can) // input validation loop
{
try
{
System.out.println("Enter an integer ( press -99 to quit)"); //direction to user.
str = input.nextLine(); // get a string containing an int number
str = str.trim(); // remove any extra whitespace from string sides
a=Integer.parseInt(str); // convert.
if(a==-99)
{
System.out.println("The maximum is:'"+max+" and the minimum is: "+min+"'.");
break;
}
if(a>max) // max and min number formulas
{
max=a;
}
if(a<min)
{
min=a;
}
}
catch (Exception e) // handle the exception below
{
System.out.println("INPUT ERROR: Please enter an integer number!!"); // output error
System.out.println(e.getMessage()); // show what user did/wrote.
}
}
答案 0 :(得分:2)
您应该将min
初始化为较大的值,而不是0
。
将其设置为int
的最大值,如下所示:
int min = Integer.MAX_VALUE;
同样,如果您的程序接受负值,则最好将max
初始化为可能的最小整数(-2147483648),而不是0
:
int max = Integer.MIN_VALUE;
答案 1 :(得分:0)
出现问题的原因是您在程序开头将最小值设置为0。因此,只有小于该值的数字将为负数。 5大于0.
理想的方法是使用int min = Integer.MAX_VALUE
,它将min初始化为最大可能的整数值。因此,所有数字应小于或等于该数字,除非它的大小大于可存储在4个字节中的数量
如其他答案所述,您还应考虑设置int max = Integer.MIN_VALUE
答案 2 :(得分:0)
代码if(a<min) min =a;
永远不会执行,因为您的a
值始终小于min。您应该将min值初始化为第一个值。
答案 3 :(得分:0)
从屏幕截图中一切正常。输入序列产生正确的结果:
start max = 0; min = 0;
=> 5 max = 5; min = 0;
=> 15 max = 15; min = 0;
=> 26 max = 26; min = 0;
=> 68 max = 68; min = 0;
要获得正确的结果,您应该:
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;