我正在嘗試僅使用嵌套 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");
}
}
}
}
uj5u.com熱心網友回復:
我已經改進了你的代碼。用這個。
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]>79) {
System.out.println(rollNumber[i] " Honors");
} else if(marks[i]>59) {
System.out.println(rollNumber[i] " First Division");
} else if(marks[i]>49) {
System.out.println(rollNumber[i] " Second Division");
} else {
System.out.println(rollNumber[i] " Fail");
}
}
}
希望問題能好起來!
uj5u.com熱心網友回復:
你的邏輯不對。如果您已經對 進行>79了測驗,則>59在if子句中進行測驗是沒有意義的。改用else子句。最里面if應該是else的if它在不在。
if(marks[i]>79) {
......
} else {
//move this if from the if clause to here: else clause
if(marks[i]>59){
.......
}
}
或者,系統化是值得的,這樣您就不會混淆自己。您首先測驗最低點 - 49 - 然后測驗最高點 - 79。也許 49、59、79 可以避免混淆,如下所示:
if(marks[i]>49) {
if(marks[i]>59) {
if(marks[i]>79) {
System.out.println(rollNumber[i] " Honors");
} else {
System.out.println(rollNumber[i] " First Division");
}
} else {
System.out.println(rollNumber[i] " Second Division");
}
} else {
System.out.println(rollNumber[i] " Fail");
}
或者:
if(marks[i]>79) {
System.out.println(rollNumber[i] " Honors");
} else if(marks[i]>59) {
System.out.println(rollNumber[i] " First Division");
} else if(marks[i]>49) {
System.out.println(rollNumber[i] " Second Division");
} else {
System.out.println(rollNumber[i] " Fail");
}
uj5u.com熱心網友回復:
我不知道預期的行為到底是什么,但這顯然是一個問題:
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");
}
如果marks[i] > 79 它將總是> 59,所以永遠不會輸入else
編輯:您可以使用類創建域模型,而不是使用陣列并使用索引 i 從中獲取相應的值:
class Category {
final String name;
final int boundary;
Category(String name, int boundary) {
this.name = name;
this.boundary = boundary;
}
}
class Grade {
final int mark;
final int rollNumber;
Grade(int mark, int rollNumber) {
this.mark = mark;
this.rollNumber = rollNumber;
}
}
(省略了 getter 和 setter)
這可以闡明您的代碼的含義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/347839.html
