java - 如果满足 if 循环内部条件,如何退出 for 循环
问题描述
我正在尝试创建一种方法,该方法允许您选择测试分数数组中的哪个索引。它将检查分数是多少并返回该分数的分数。在我的 getGrade 方法中,无论分数是多少,它都会返回“NG”。
private double[] scores = new double[3];
private static int[]boundaryVals={80,72,64,60,56,52,48,40,35,30,1,0};
private static String[]grades={"A1","A2","B1","B2","B3","C1","C2","C3","D1","D2","F","NG"};
public String getGrade(int i) {
String grade = "";
for(int x=0;x<boundaryVals.length;x++) {
if(boundaryVals[x] <= i) {
grade = grades[x];
}
}
return grade;
}
解决方案
只需更改循环退出条件以在分配成绩时终止。
public String getGrade(int i) {
String grade = "";
for(int x=0; x<boundaryVals.length && !grade.equals(""); x++) {
if (boundaryVals[x] <= i) {
grade = grades[x];
}
}
return grade;
}
这是更好的结构,因为它在一个地方具有循环终止条件,而不是通过使用“break”将其展开。
像往常一样,这不是一个硬性规定。对于更复杂的情况,“break”更清晰。这是一个品味问题。
正如评论中所建议的,从中间循环“返回”在这种特殊情况下也不是一个糟糕的解决方案。但我认为值得指出的是,循环条件不仅限于从 0 到 N 的简单计数。
推荐阅读
- ocaml - 最后的可选参数影响之前的标签参数
- post - 无法将结果发布给契约经纪人
- html - 当主菜单有滚动条时如何显示子菜单?
- kubernetes - 如何将现有的 git 项目导入具有多个微服务的 Jenkins X?
- direct3d - Direct3D 功能级别是否保证对体积纹理的非 2 次幂支持?
- sed - 在同一表达式侧使用 sed 参数 \1、\2
- c# - 用字典或列表作为值读取 Json 文件 C#
- php - ZipArchive::extractTo 不起作用并且不返回任何内容
- javascript - 开玩笑等到调用 typemoq 函数
- c# - 如何反转打印出的数字