我的if-else语句存在问题,我的变量未初始化

时间:2015-11-01 23:17:50

标签: 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 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语句中,但我不确定它是什么。谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

即使3个外部if语句中的一个保证为true,编译器也不知道这一点,因此它认为minmax和{ {1}}可能尚未分配值。

解决方案就是在声明它们时给它们伪值:

mid

答案 1 :(得分:0)

如果你完全确定总是一个(不少于也没有)条件是真的那样写:

if(condition1) {
    //code
} else if(condition2) {
    //code2
} else {
    //code3
}

如果condition1和condition2都为false,则不需要检查condition3是否为true。您还可以使用switch语句(和默认操作)。通过这种方式,您的代码对于如此小的任务来说是漫长而复杂的。尝试对这3个变量进行排序,而不是多次比较所有可能的对。想象一下,你有100个而不是3个数字 - 你还会比较所有可能性吗? :)