Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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 为什么初始化字母时出现错误,如何修复? 公共静态字符确定等级(浮动等级) { 字符字母; 如果(grade>=90&&grade=80&&grade=70&&grade=60&&grade_Java - Fatal编程技术网

Java 为什么初始化字母时出现错误,如何修复? 公共静态字符确定等级(浮动等级) { 字符字母; 如果(grade>=90&&grade=80&&grade=70&&grade=60&&grade

Java 为什么初始化字母时出现错误,如何修复? 公共静态字符确定等级(浮动等级) { 字符字母; 如果(grade>=90&&grade=80&&grade=70&&grade=60&&grade,java,Java,char-letter只是声明了一个类型为char的变量。初始化意味着在程序中的其他地方对该变量进行操作之前,为其分配一个初始值 在您的情况下,如果grade不在您明确检查的任何范围内,letter需要一个默认值,您的方法可以返回该值。由于这是您的方法中的一个局部变量,编译器不会为char指定标准默认值,如本文档节选中所述: 局部变量略有不同;编译器从不为未初始化的局部变量指定默认值。如果无法在声明局部变量的位置初始化它,请确保在尝试使用它之前为它指定一个值。访问未初始化的局部变量将导致编译时错

char-letter
只是声明了一个类型为
char
的变量。初始化意味着在程序中的其他地方对该变量进行操作之前,为其分配一个初始值

在您的情况下,如果
grade
不在您明确检查的任何范围内,
letter
需要一个默认值,您的方法可以返回该值。由于这是您的方法中的一个局部变量,编译器不会为
char
指定标准默认值,如本文档节选中所述:

局部变量略有不同;编译器从不为未初始化的局部变量指定默认值。如果无法在声明局部变量的位置初始化它,请确保在尝试使用它之前为它指定一个值。访问未初始化的局部变量将导致编译时错误


这就是您需要显式初始化它的原因。

char letter
只是声明了一个类型为
char
的变量。初始化意味着在程序中的其他地方对该变量进行操作之前,为其分配一个初始值

在您的情况下,如果
grade
不在您明确检查的任何范围内,
letter
需要一个默认值,您的方法可以返回该值。由于这是您的方法中的一个局部变量,编译器不会为
char
指定标准默认值,如本文档节选中所述:

局部变量略有不同;编译器从不为未初始化的局部变量指定默认值。如果无法在声明局部变量的位置初始化它,请确保在尝试使用它之前为它指定一个值。访问未初始化的局部变量将导致编译时错误

这就是为什么需要显式初始化它。

问题是:

public static char determineGrade(float grade)
{
    char letter;


        if(grade>=90 && grade<=100)
        {
            letter='A';
        }
        else if(grade>=80 && grade<=89)
        {
            letter='B';
        }
        else if(grade>=70 && grade<=79)
        {
            letter='C';
        }
        else if(grade>=60 && grade<=79)
        {
            letter='D';
        }
        else if(grade<=59)
        {
            letter='F';
        }


   return letter;         
}
因为您有一系列if条件,所以编译器无法知道某个条件在运行时是否为true。因此,您需要为
字母
声明一个默认值,或者最后一个
else
不应具有任何条件

对于等级超过100的,应该有一些检查来处理这个问题

如果等级超过100是不可接受的,则应在方法开始时引发异常(根据经验法则):

问题是:

public static char determineGrade(float grade)
{
    char letter;


        if(grade>=90 && grade<=100)
        {
            letter='A';
        }
        else if(grade>=80 && grade<=89)
        {
            letter='B';
        }
        else if(grade>=70 && grade<=79)
        {
            letter='C';
        }
        else if(grade>=60 && grade<=79)
        {
            letter='D';
        }
        else if(grade<=59)
        {
            letter='F';
        }


   return letter;         
}
因为您有一系列if条件,所以编译器无法知道某个条件在运行时是否为true。因此,您需要为
字母
声明一个默认值,或者最后一个
else
不应具有任何条件

对于等级超过100的,应该有一些检查来处理这个问题

如果等级超过100是不可接受的,则应在方法开始时引发异常(根据经验法则):

试试这个

if(grade > 100){
   throw new IllegalArgumentException("Invalid input"):
}
公共静态字符确定等级(浮动等级){
字符字母=0;
如果(等级>=90&&grade=80&&grade=70&&grade=60&&grade试试这个

if(grade > 100){
   throw new IllegalArgumentException("Invalid input"):
}
公共静态字符确定等级(浮动等级){
字符字母=0;
如果(等级>=90&&grade=80&&grade=70&&grade=60&&grade
为什么初始化字母时出现错误,如何修复

问题是,在没有为
字母
赋值的情况下,可以到达
return
语句(当
等级
大于100.0时会发生这种情况。虽然这在应用程序的上下文中可能没有意义,但Java编译器无法知道这一点。)

人们建议返回一个“默认”值。我认为这是错误的,除非API规范定义了一个默认值。(在我看来,这样做是不好的API设计。)

我认为如果提供的参数没有意义,更好的方法是抛出异常(例如
IllegalArgumentException

public static char determineGrade(float grade) {
    char letter = 0;

    if (grade >= 90 && grade <= 100) {
        letter = 'A';
    } else if (grade >= 80 && grade <= 89) {
        letter = 'B';
    } else if (grade >= 70 && grade <= 79) {
        letter = 'C';
    } else if (grade >= 60 && grade <= 79) {
        letter = 'D';
    } else if (grade <= 59) {
        letter = 'F';
    }
    return letter;
}
公共静态字符确定等级(浮动等级){
如果(等级>=90&&grade=80&&grade=70&&grade=60&&grade=0&&grade=

为什么初始化字母时出现错误,如何修复

问题是,在没有为
字母
赋值的情况下,可以到达
return
语句(当
等级
大于100.0时会发生这种情况。虽然这在应用程序的上下文中可能没有意义,但Java编译器无法知道这一点。)

人们建议返回一个“默认”值。我认为这是错误的,除非API规范定义了一个默认值。(在我看来,这样做是不好的API设计。)

我认为如果提供的参数没有意义,更好的方法是抛出异常(例如
IllegalArgumentException

public static char determineGrade(float grade) {
    char letter = 0;

    if (grade >= 90 && grade <= 100) {
        letter = 'A';
    } else if (grade >= 80 && grade <= 89) {
        letter = 'B';
    } else if (grade >= 70 && grade <= 79) {
        letter = 'C';
    } else if (grade >= 60 && grade <= 79) {
        letter = 'D';
    } else if (grade <= 59) {
        letter = 'F';
    }
    return letter;
}
公共静态字符确定等级(浮动等级){

如果(grade>=90&&grade=80&&grade=70&&grade=60&&grade=0&&grade=
,因为
char
只在
if
语句中给定值,所以方法不知道是否会给它一个值(它假设
if
语句中没有一个具有真实条件的可能性)因此,我们要求你们给出一个初始值。
另一种方法是将最后一个
else if
语句转换为一个
else
,因为它覆盖了所有剩余的可能性。

因为
char
只在
if
语句中给定值,所以方法不知道是否会给它一个值(它假设
if
语句中没有一条语句具有真实条件),因此要求您给出初始值。 另一种方法是将最后一个
else if
语句转换为一个
else语句