【发布时间】:2021-12-18 18:46:32
【问题描述】:
我正在尝试仅使用嵌套 if else 来打印 rollNumber 数组的标记。但是,我得到的输出是:
111 Honors
111 First Division
333 Fail
而输出应该是
111 Honors
222 First Division
333 Fail
444 Second Division
我哪里错了?我写的代码如下:
public class JavaApplication53 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int rollNumber[]={111, 222, 333, 444};
int marks[]={81, 75, 43, 58};
for(int i=0; i<rollNumber.length; i++) {
if(marks[i]>49) {
if(marks[i]>79) {
System.out.println(rollNumber[i] + " Honors");
if(marks[i]>59){
System.out.println(rollNumber[i] + " First Division");
} else {
System.out.println(rollNumber[i] + " Second Division");
}
}
} else {
System.out.println(rollNumber[i]+ " Fail");
}
}
}
}
【问题讨论】:
-
只有切向相关但一致的缩进有助于更容易地理解嵌套结构。 (并且可能会帮助您查看逻辑错误。)
-
@JohnnyMopp 你说得对——我在脑海中做了压痕,但仍然没有看到;直到我格式化它才变得非常明显。
-
可以指定规则吗?
-
@AdriaanKoster 有规则,只是执行不正确,例如,如果标记 > 79,则对
-
@DaveNewton 你会接受一个不正确的实现作为你的需求规范吗?另外,我认为如果 OP 自己花时间写下规范,他可能会更好地理解这个问题。
标签: java arrays if-statement nested