簡體   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