Java 如果我的变量没有初始化,那么if-else语句就会出现问题
我正在用Java编写一个简单的程序,确定三个用户输入的整数值的数字顺序。出于某种原因,当我构建程序时,它说我的变量min、mid和max尚未初始化。代码如下:Java 如果我的变量没有初始化,那么if-else语句就会出现问题,java,if-statement,initialization,Java,If Statement,Initialization,我正在用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 pro
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);
}
}
import java.util.Scanner;
公共类MinMidMax
{
公共静态void main(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
System.out.print(“此程序查找您输入的三个数字中的最小、最大和中间数字。”);
System.out.print(“\n\n输入您的第一个号码:”);
int num1=scan.nextInt();
System.out.print(“输入第二个号码:”);
int num2=scan.nextInt();
System.out.print(“输入第三个号码:”);
int num3=scan.nextInt();
最小整数、中间整数、最大整数;
if(num1即使3条外部if
语句中的一条保证为true
,编译器也不知道这一点,因此它认为min
、max
和mid
可能没有赋值
解决方案只是在声明它们时为它们提供虚拟值:
int min = 0;
int max = 0;
int mid = 0;
如果您绝对确定始终有一个(不少于也不多于)条件为真,请这样写:
if(condition1) {
//code
} else if(condition2) {
//code2
} else {
//code3
}
如果condition1和condition2都为false,则无需检查condition3是否为true。您还可以使用switch语句(和默认操作)。顺便说一句,对于这样一个小任务,您的代码太长太复杂了。请尝试对这3个变量进行排序,而不是多次比较所有可能的对。假设您有100个数字,而不是3个数字,您还会比较所有可能的数吗?:)编译器只是告诉您可能存在这些变量未正确初始化的情况。编译器不会对if
语句进行“逻辑”检查。