Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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 为什么我需要初始化这个?_Java_Initialization_Char - Fatal编程技术网

Java 为什么我需要初始化这个?

Java 为什么我需要初始化这个?,java,initialization,char,Java,Initialization,Char,有人能给我解释一下为什么我必须在“if”语句之前初始化“char grade='A';”,而不是简单地声明为“char grade;” 谢谢。如果..else if中的任何一个都不可能是真的。因此,您应该初始化等级或在底部添加else条件。有可能if..else if都不为真。因此,您应该初始化等级,或者在底部添加else条件。您的if/else构造没有覆盖所有代码分支。如果testScore小于零,grade将被单位化,您的System.out.println调用将失败。您的If/else构造

有人能给我解释一下为什么我必须在“if”语句之前初始化“char grade='A';”,而不是简单地声明为“char grade;”


谢谢。

如果..else if中的任何一个都不可能是真的。因此,您应该初始化
等级
或在底部添加
else
条件。

有可能
if..else if
都不为真。因此,您应该初始化
等级
,或者在底部添加
else
条件。

您的if/else构造没有覆盖所有代码分支。如果
testScore
小于零,
grade
将被单位化,您的
System.out.println
调用将失败。

您的If/else构造没有覆盖所有代码分支。如果
testScore
小于零,
grade
将被单位化,您的
System.out.println
调用将失败。

Java不知道您的
testScore
从来都不是负值(在更复杂的情况下,它无法推断出此类信息)。因此,if子句可能都不成立,变量
grade
将被单位化。

Java不知道您的
testScore
从来都不是负数(在更复杂的情况下,它无法推断此类信息)。因此,if子句可能都不成立,变量
grade
将被单位化。

您可以将其声明为“char grade”,但需要一个else语句

假设你有
char等级而不是
字符等级='A'

我们也可以假设,
testscore
是一个负数

编译器将通过所有if条件,而不会将
grade
初始化为字母。java编译器希望确保在继续之前覆盖所有基础。根据您的程序要求,我会将最后一条语句更改为
else
语句,而不是
else语句。如果

您可以将其声明为“char grade”,但您需要一条else语句

假设你有
char等级而不是
字符等级='A'

我们也可以假设,
testscore
是一个负数


编译器将通过所有if条件,而不会将
grade
初始化为字母。java编译器希望确保在继续之前覆盖所有基础。根据您的程序要求,我会将最后一条语句更改为
else
语句,而不是
else语句。如果

我会保持变量未初始化,并让编译器告诉我有一个代码分支没有为变量赋值。这说明并不是所有可能的输入都被处理。对于当前代码,负值是a,这是不对的


我将添加一个额外的else语句,它打印错误消息并退出。然后编译器将接受未初始化的变量,并覆盖所有输入路径(非数字输入除外,这将在调用nextInt()时产生异常).

我会让变量保持未初始化状态,让编译器告诉我有一个代码分支没有给变量赋值。这告诉您,并不是所有可能的输入都在处理中。对于当前代码,负值是a,这是不对的

我将添加一个额外的else语句,该语句打印错误消息并退出。然后编译器将接受未初始化的变量并覆盖所有输入路径(非数字输入除外,这将在调用nextInt()时产生异常)

import java.util.Scanner;

class Practice {

public static void main(String args[]) {        


    System.out.println("Please enter your test score: ");
    Scanner enteredScore = new Scanner(System.in);
    int testScore = (enteredScore.nextInt());


    char grade = 'A';        

    if (testScore >= 90) {
        grade = 'A';            
    }                
    else if (testScore >= 80) {
        grade = 'B';
    }                
    else if (testScore >= 70) {
        grade = 'C';
    }        
    else if (testScore >= 60) {
        grade = 'D';
    }        
    else if (testScore >= 0) {
        grade = 'U';
    }


    System.out.println("Your grade is a " + grade + ".");

}
}