我會複製/粘貼作業,然後是迄今取得的進展。我真的不想找人做這項工作,只有一些幫助,指出我正確的方向,我要去哪裏錯了?該程序運行時沒有錯誤,但它只是返回一個學生返回的多個結果。我可以修改成績,並讓它產生不同的結果,所以我知道數學正在完成,但我不知道爲什麼它會給單個學生提供多個(和不同的)結果。我一直在檢查代碼,無法確定我要出錯的地方。我最好的猜測是它在OutputGrade方法的某個地方,我找不到它。尋求協助賦值平均數組
說明:
創建一個名爲學生有下列實例變量的Java類: •私人字符串studentName; •private int []等級; //數組 包含setter和getter方法來設置和獲取這2個屬性。等級實例數組變量 - setGrades()的setter方法應該採用單個參數,該參數是一個int數組,並且已經填充了等級。如果語句確保每個等級值都使用了setGrades()在數組參數是有效的(在0到100之間) - 您將需要結合if語句使用循環來有效地完成此操作。如果等級超出範圍,setGrades()應該將該等級值設置爲0.您傳遞給setGrades()的數組必須保持3到5個等級。 包含一個名爲outputGrade()的方法,該方法對學生成績數組中的所有成績進行平均,然後使用switch語句根據以下條件輸出成績轉換: •對於0-59的值,程序應該輸出:「學生失敗「 •對於60-69的值,程序應輸出:」學生獲得D「 •對於70-79的值,程序應該輸出:」學生獲得C「 •對於值從80-89,你的程序應該輸出:「學生獲得B」 •對於90-100的值,你的程序應輸出:「學生獲得A」 其中「學生」是學生的真實姓名。 創建一個名爲TestStudent的測試類,它實例化3名學生並設置他們的姓名和成績,然後爲每個學生調用outputGrade()。對於你的3名學生,1名必須有3個等級,1個必須有4個等級,並且1個必須有5個等級。這是因爲你將有3個不同的數組大小傳遞給setGrades()。確保對於1名學生,setGrades()被調用1級值超出範圍(小於0或大於100)。
代碼:
public class TestStudent {
public static void main(String[] args) {
Student student1 = new Student();
int[] grades1 = {15, 50, 5};
student1.setStudentName("Ernest Craft");
student1.setGrades(grades1);
student1.outputGrades();
Student student2 = new Student();
int[] grades2 = {95, 95, 95, 95};
student2.setStudentName("Steve Jones");
student2.setGrades(grades2);
student2.outputGrades();
Student student3 = new Student();
int[] grades3 = {105, -1, 72, 90, 88};
student3.setStudentName("Mary Smith");
student3.setGrades(grades3);
student3.outputGrades();
} // end method main
} // end class TestStudent
Student類:
public class Student {
private String studentName;
private int[] grades;
//constructor
public Student() {
}
public void setStudentName(String name) {
studentName = name;
} // end method setStudentName
public String getStudentName() {
return studentName;
} // end method getStudentName
public void setGrades(int gradeArray[]) {
grades = gradeArray;
for (int i = 0; i < gradeArray.length; i++) {
if (gradeArray[i] < 0 || gradeArray[i] > 100) {
gradeArray[i] = 0;
} // end if
} // end loop
} // end method setGrades
public int[] getGrades() {
return grades;
} // end method getGrades
public void outputGrades() {
int gradesTotal = 0;
int gradesAverage;
char letterGrade;
for (int i : grades) {
gradesTotal += i;
} // end loop
gradesAverage = gradesTotal/(grades.length);
if (gradesAverage >= 0 && gradesAverage <= 59) {
letterGrade = 'F';
} else if (gradesAverage >= 60 && gradesAverage <= 69) {
letterGrade = 'D';
} else if (gradesAverage >= 70 && gradesAverage <= 79) {
letterGrade = 'C';
} else if (gradesAverage >= 80 && gradesAverage <= 89) {
letterGrade = 'B';
} else {
letterGrade = 'A';
} // end if statement
switch (letterGrade) {
case 'A':
System.out.println(studentName + " gets an A.");
case 'B':
System.out.println(studentName + " gets an B.");
case 'C':
System.out.println(studentName + " gets an C.");
case 'D':
System.out.println(studentName + " gets an D.");
case 'F':
System.out.println(studentName + " gets an F.");
} // end switch
} // end method outputGrades
} // end class Student
感謝您抽空看看!
本
小費,除非需要'switch'。你的'case'主體都是相同的減一個字符不同的(你有'letterGrade'的形式,所以你可以簡單地用'System.out.println(新的StringBuilder())替換整個'switch'。append(studentName).append(「gets an」).append(letterGrade).append(「。」));' –
你有一個好主意,但是這個任務的參數需要一個開關。儘管如此,我將把它歸檔以備後用。謝謝! – user3533863