Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果我的变量没有初始化,那么if-else语句就会出现问题_Java_If Statement_Initialization - Fatal编程技术网

Java 如果我的变量没有初始化,那么if-else语句就会出现问题

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

我正在用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);
}
}
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
语句进行“逻辑”检查。