[英]Why is my Java code not working (beginner, array)
謝謝你看。 我被困在為什么這不處理輸入成績的情況。 它處理 A+ 很好(返回 4.0)但 'A' 給出錯誤,'A-' 給出 4.0(應該是 3.7),那么 'B+' 是正確的,'B' 給出錯誤,'B-' 給出 3.0(應該是2.7),這就是模式。 有什么想法嗎?
public class Grade {
private String grade = "";
public Grade(String grade) {
this.grade = grade;
public double getgrade() {
double gpa = 0.0;
char[] gradeArray = this.grade.toCharArray();
if (gradeArray[0] == 'A') {
gpa += 4.0;
}
if (gradeArray[0] == 'B') {
gpa += 3.0;
}
if (gradeArray[0] == 'C') {
gpa += 2.0;
}
if (gradeArray[0] == 'D') {
gpa += 1.0;
}
if (gradeArray[1] == '+') {
if (gradeArray[0] != 'A') {
gpa += 0.3;
}
}
if (gradeArray[0] == '-') {
gpa -= 0.3;
}
return gpa;
}
}```
好吧,如果你打電話給 A 或 B,例如:
new Grade("A").getNumericGrade()
你在線得到 java.lang.IndexOutOfBoundsException
if (gradeArray[1] == '+') {
因為 gradeArray[1] 不存在,所以只有 1 個字符(在索引 0 處)是 'A' 或 'B'
簡單的解決方案:檢查長度! 例如:
if (gradeArray.length > 1 && gradeArray[1] == '+') {
公開課成績{
private String grade = "";
public Grade(String grade) {
this.grade = grade;
}
public String getLetterGrade() {
return this.grade;
}
public double getNumericGrade() {
double gpa = 0.0;
char[] gradeArray = this.grade.toCharArray();
// Good to have null/empty check always
if ( gradeArray.length == 0 || gradeArray[0] == ' '){
return 0;
}
// Code readability increases manifolds with switch. if clause can also be used
// Considering only the cases you originally had. With this your code block at last becomes redundant
switch ( gradeArray[0] ){
case 'A': gpa += 4.0; break;
case 'B': gpa += 3.0; break;
case 'C': gpa += 2.0; break;
case 'D': gpa += 1.0; break;
default: break;
}
// First you need to check if there is a second character present or not
// If present then it should be only +/-
if( gradeArray.length == 2 && ( gradeArray[1] == '+' || gradeArray[1] == '-' )){
if (gradeArray[1] == '+') {
if (gradeArray[0] != 'A') {
gpa += 0.3;
}
}
// '-' would be second character, so index should be 1
if (gradeArray[1] == '-') {
gpa -= 0.3;
}
} //Include else to handle other scenarios
return gpa;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.