【问题标题】:I can't return String value in Java我无法在 Java 中返回字符串值
【发布时间】:2020-11-29 10:40:09
【问题描述】:

我有作业需要我为输入的双精度值返回一个字符串值。我尝试了一些东西,但没有任何效果。可能这对你来说太基本了,但我在这里或互联网上的任何地方都找不到答案,可能是因为我不知道去哪里找。如果您只是指出在哪里寻找或帮助我,那就太好了。非常感谢! 首先我尝试了这个:

public static String gradeLetter(double grade) {
    if (grade<=34) {
        String c = "FF";
        return c;
    }
    if (grade<=45 && grade >= 35) {
        String c = "FD";
        return c;
    }
    if (grade<=52 && grade >= 46) {
        String c = "DD";
        return c;
    }
    if (grade<=59 && grade >= 53) {
        String c = "DC";
        return c;
    }
    if (grade<=66 && grade >= 60) {
        String c = "CC";
        return c;
    }
    if (grade<=73 && grade >= 67) {
        String c = "CB";
        return c;
    }
    if (grade<=80 && grade >= 74) {
        String c = "BB";
        return c;
    }
    if (grade<=87 && grade >= 81) {
        String c = "BA";
        return c;
    }
    if (grade<=100 && grade >= 88) {
        String c = "AA";
        return c;
    }
}

它没有用,所以我尝试了这个:

public static String gradeLetter(double grade) {
    String c = "";
    if (grade<=34) {
        String a = "FF";
    }
    if (grade<=45 && grade >= 35) {
        String a = "FD";
    }
    if (grade<=52 && grade >= 46) {
        String a = "DD";
    }
    if (grade<=59 && grade >= 53) {
        String a = "DC";
    }
    if (grade<=66 && grade >= 60) {
        String a = "CC";
    }
    if (grade<=73 && grade >= 67) {
        String a = "CB";
    }
    if (grade<=80 && grade >= 74) {
        String a = "BB";
    }
    if (grade<=87 && grade >= 81) {
        String a = "BA";
    }
    if (grade<=100 && grade >= 88) {
        String a = "AA";
    }
    return c+a;
}

仍然没有运气......两者都给出了编译错误。

【问题讨论】:

  • 请向我们提供有关此问题的更多信息您收到的错误消息是什么以及您要达到的目标是什么?
  • 它不起作用 不是错误描述。请描述您的期望和发生的情况
  • 您能否详细说明这不起作用的原因?你有错误吗?结果错误?
  • 您应该考虑使用 else if 语句,或者使用 switch 语句会更好
  • 它给出了一个编译错误,但现在已经解决了。

标签: java string methods


【解决方案1】:

你在函数中使用了一个局部变量,所以它返回 null 可能你可以试试:

  public static String gradeLetter(double grade) {
    String a = "";
    if (grade<=34) {
         a = "FF";
    }
    if (grade<=45 && grade >= 35) {
         a = "FD";
    }
    if (grade<=52 && grade >= 46) {
         a = "DD";
    }
    if (grade<=59 && grade >= 53) {
         a = "DC";
    }
    if (grade<=66 && grade >= 60) {
         a = "CC";
    }
    if (grade<=73 && grade >= 67) {
         a = "CB";
    }
    if (grade<=80 && grade >= 74) {
         a = "BB";
    }
    if (grade<=87 && grade >= 81) {
         a = "BA";
    }
    if (grade<=100 && grade >= 88) {
         a = "AA";
    }
    return a;
}

让我知道它是否有效

【讨论】:

  • 考虑使用else if
  • 它确实有效。我很震惊,因为我一直在研究这近 30 分钟,而你立即给出了答案。谢谢!
【解决方案2】:

在你的第一种情况下,你会得到一个编译错误,因为你错过了方法末尾的返回(在 if 语句之外

public static String gradeLetter(double grade) {
    if (grade<=34) {

...
    if (grade<=100 && grade >= 88) {
        String c = "AA";
        return c;
    }
   return null;
}

在第二种情况下,您尝试在定义的范围之外访问a

public static String gradeLetter(double grade) {
    String a = "";
    if (grade<=34) {
        a = "FF";
    }
    if (grade<=45 && grade >= 35) {
        a = "FD";
    }
    ....
    return a;
}

【讨论】:

  • 谢谢你是对的。我不知道 return null 是什么,但我相信我会在接下来的课程中学习。谢谢你的回答和你给我的问题的时间。
  • @Vecta null 就像一个未定义的值。 dev.to/dj_devjournal/…。您也可以在此处返回任何其他字符串。重要的是要有return语句
  • 这非常有帮助,非常感谢。我想我开始有了 null 的概念。
【解决方案3】:

试试这个

public class HelloWorld {
    public static String gradeLetter(double grade) {
        String stringValue = "";
        
        if (grade <= 45 && grade >= 35) {
            stringValue = "FD";
        } else if (grade <= 52 && grade >= 46) {
            stringValue = "DD";
        } else if (grade <= 59 && grade >= 53) {
            stringValue = "DC";
        } else if (grade <= 66 && grade >= 60) {
            stringValue = "CC";
        } else if (grade <= 73 && grade >= 67) {
            stringValue = "CB";
        } else if (grade <= 80 && grade >= 74) {
            stringValue = "BB";
        } else if (grade <= 87 && grade >= 81) {
            stringValue = "BA";
        } else if (grade <= 100 && grade >= 88) {
            stringValue = "AA";
        } else {
            stringValue =  "FF";
        }

        return stringValue;
    }

    public static void main(String [] args) {
        System.out.println(gradeLetter(75.59));
    }
}

【讨论】:

  • 试试这个不是分析器。解释你改变了什么以及为什么。
  • 我只从函数中删除了冗余变量c,因为一个变量就足够了,重命名a,并添加if-else语句进行比较。此外,如果 grade 的值超过 100,则该函数将返回 FF,对于超过 100 的输入,这在某种程度上是“未定义的结果”。
  • 这个解释应该是你答案的一部分
【解决方案4】:

这里有两个主要问题: 1)如果grade>100,变量a没有被声明,在这种情况下程序会抛出错误 2)没有必要检查所有这些条件,因为只有一个是真的,所以你应该更好地使用 if else if 语句,如:

public static String gradeLetter(double grade) {
        String a ="";
        if (grade<=34) {
            a = "FF";
        }else if (grade<=45 && grade >= 35) {
            a = "FD";
        }else if (grade<=52 && grade >= 46) {
            a = "DD";
        }else if (grade<=59 && grade >= 53) {
            a = "DC";
        }else if (grade<=66 && grade >= 60) {
            a = "CC";
        }else if (grade<=73 && grade >= 67) {
            a = "CB";
        }else if (grade<=80 && grade >= 74) {
             a = "BB";
        }else if (grade<=87 && grade >= 81) {
            a = "BA";
        }else if (grade<=100 && grade >= 88) {
            a = "AA";
        }
        return a;
 }

这样您将确保您的方法将返回一个值(即使这是一个空字符串),并且您不会花时间检查语句是否为假

【讨论】:

  • 与空字符串c的连接没有意义。
猜你喜欢
  • 2021-09-03
  • 2015-03-15
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 2016-05-19
  • 1970-01-01
  • 2023-04-10
  • 2020-01-22
相关资源
最近更新 更多