繁体   English   中英

初始化变量Java

[英]Initializing a variable Java

我正在编写一个带有do while循环和switch的简单程序,该cna接受数学运算并针对给定的2个数字执行它。

我的问题是,为什么我应该在开始时将操作产生的结果初始化为零。

如果我不使ans = 0,它将给我错误。 如果不满足给定的条件,则某些代码部分将不会执行,并且我不需要“ ans”。

package q3;
import java.util.Scanner;

public class Q3 {
public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    char operator;
    float no1, no2, ans=0; // <-------------- Why should I initialize ans

    do {
        System.out.println(" Mathematical Operations to be performed :");
        System.out.println("\t * Multiplication\n\t / Division\n\t + Addition\n\t - Subtraction");
        System.out.println("Press any other character to exit");
        System.out.print("Mathematical Operator : ");
        operator = input.next().charAt(0);

        if (operator == '*' || operator == '/' || operator == '+' || operator == '-') {
            System.out.print("Number 1: ");
            no1 = input.nextFloat();
            System.out.print("Number 2: ");
            no2 = input.nextFloat();

            switch (operator) {
                case '*':
                    ans = no1 * no2;
                    break;
                case '/':
                    ans = no1 / no2;
                    break;
                case '+':
                    ans = no1 + no2;
                    break;
                case '-':
                    ans = no1 - no2;
                    break;
            }

            System.out.println("The answer of " + no1 + operator + no2 + " = " + ans);

        }
    } while (operator == '*' || operator == '/' || operator == '+' || operator == '-');

}

}

这是因为如果不区分大小写,则不会设置ans的值。 所以你不能使用它。

您可以通过添加default大小写并将其中的ans值设置为0来克服此问题。

Java要求所有局部变量在使用之前都要初始化。

在打印行中,读取abs的值,但并非所有控制路径都为其设置一个值。 (即使您认为您已经涵盖了使用外部if switch所有可能性,编译器也不会那样看:其他线程可以修改operator )。

因此,您的IDE /编译器建议您在声明时进行初始化。

您应该初始化ans=0; 因为您没有ansdefault值,所以您需要对其进行初始化。
但是,如果添加默认值,则无需像这样初始化它:

    ...
    case '-':
    ans = no1 - no2;
      break;
    default :
    ans = someValue; 
     break; 

好吧,可能没有任何case语句适用,结果ans仍未初始化。 而且由于局部变量必须在使用之前进行初始化,因此会出现此错误。

如果您没有初始化它,那么ans首先将具有一个垃圾值。

初始化它不是强制性的。

但是,如果将其初始化,则程序将是一个更好的程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM