我正在用Java编写一个简单的程序,它确定三个用户输入的整数值的数字顺序。出于某种原因,当我构建程序时,它表示我的变量min,mid和max尚未初始化。这是代码:
import java.util.Scanner;
public class MinMidMax
{
public static void main (String[] args)
{
Scanner scan = new Scanner (System.in);
System.out.print ("This program finds the minimum, maximum, and middle number of three numbers that you input.");
System.out.print ("\n\nEnter your first number: ");
int num1 = scan.nextInt();
System.out.print ("Enter your second number: ");
int num2 = scan.nextInt();
System.out.print ("Enter your third number: ");
int num3 = scan.nextInt();
int min, mid, max;
if (num1<=num2 && num1<=num3)
{min = num1;
if (num2<=num3)
{
mid = num2;
max = num3;
}
if (num3<=num2)
{
mid = num3;
max = num2;
}
}
if (num2<=num1 && num2<=num3)
{min = num2;
if (num1<=num3)
{ mid = num1;
max = num3;
}
if (num3<=num2)
{
mid = num3;
max = num2;
}
}
if (num3<=num1 && num3<=num2)
{min = num3;
if (num1<=num2)
{ mid = num1;
max = num2;
}
if (num2<=num1)
{
mid = num2;
max = num1;
}
}
System.out.print ("\nMinimum: " + min);
System.out.print ("\nMiddle: " + mid);
System.out.print ("\nMaximum: " + max);
}
}
我很确定问题出在if语句中,但我不确定它是什么。谢谢你的帮助!
答案 0 :(得分:3)
即使3个外部if
语句中的一个保证为true
,编译器也不知道这一点,因此它认为min
,max
和{ {1}}可能尚未分配值。
解决方案就是在声明它们时给它们伪值:
mid
答案 1 :(得分:0)
如果你完全确定总是一个(不少于也没有)条件是真的那样写:
if(condition1) {
//code
} else if(condition2) {
//code2
} else {
//code3
}
如果condition1和condition2都为false,则不需要检查condition3是否为true。您还可以使用switch语句(和默认操作)。通过这种方式,您的代码对于如此小的任务来说是漫长而复杂的。尝试对这3个变量进行排序,而不是多次比较所有可能的对。想象一下,你有100个而不是3个数字 - 你还会比较所有可能性吗? :)