코드를 단계별로 실행할 때 내부 if 문을 완전히 건너 뜁니다. updateGrade를 입력하지 마십시오. if를 완전히 건너 뜁니다. 왜? 문제디버그 및 실행 중에 어떤 이유로 내부 if 문을 건너 뜁니다.
을 heres 방법 :
public void updateCourse(String courseID, String newLetterGrade){
for(int i=0; i<classesTaken.size(); i++){
if(classesTaken.contains(courseID)){
classesTaken.get(i).updateGrade(newLetterGrade);
}
}
}
내가 명중하면 I = 5 내 ArrayList를 = 6 (6)이 바로 아무 이유없이 루프에서 휴식을 통과 할 때 내 디버거에 따라. make에서 또는 실행할 때 오류가 표시되지 않으므로 잘못되었는지 잘 모르겠습니다.
이
은 courseID의 내용이 classesTaken에서 발견 될 때 호출되는 방법입니다 :public void updateGrade(String newGrade){
letterGrade=newGrade;
compute(newGrade);
내 테스트 파일은 다음과 같습니다가 뛰어해야 내 코드에 따라
public class TranscriptTester {
public static void main(String[] args){
Transcript test = new Transcript("11234", "Cody");
test.addCourse("COP2013","A+");
test.addCourse("COP2014","B+");
test.addCourse("COP2015","B+");
test.addCourse("COP2016","D+");
test.addCourse("COP2017","A");
test.addCourse();
test.updateCourse("COP2013", "B-");
test.updateCourse("COP2014", "A+");
test.getGPA();
test.printArray();
test.toString();
}
}
을 if COP2013이 0 인덱스에 있기 때문에 클래스 추출의 첫 번째 문장에서 if 문.
더 이상 물어 보지 않으려면 정보가 더 필요하면 문의하십시오. 감사!
public class Course {
//global variables
private String courseID;
private String letterGrade;
private Double numberGrade;
//CONSTRUCTORS
//param
public Course(String id, String letter){
courseID = id;
letterGrade=letter;
compute(letter);
}
//default
public Course(){
courseID = "COP2053";
numberGrade = 4.0;
letterGrade = "A";
compute(getLetterGrade());
}
//COMPUTING GRADES AND UPDATING
private void compute(String letter){
if(letter == "A+"){numberGrade = 4.0;}
else if(letter == "A"){numberGrade = 3.67;}
else if(letter == "A-"){numberGrade = 3.33;}
else if(letter == "B+"){numberGrade = 3.00;}
else if(letter == "B"){numberGrade = 2.67;}
else if(letter == "B-"){numberGrade = 2.33;}
else if(letter == "C+"){numberGrade = 2.00;}
else if(letter == "C"){numberGrade = 1.67;}
else if(letter == "C-"){numberGrade = 1.33;}
else if(letter == "D+"){numberGrade = 1.0;}
else if(letter == "D"){numberGrade = .67;}
else if(letter == "D-"){numberGrade = .33;}
else if(letter == "F"){numberGrade = 0.0;}
}
public void updateGrade(String newGrade){
letterGrade=newGrade;
compute(newGrade);
}
@Override
public String toString(){
return "\nCourse: "+getCourseID()+"\nLetter Grade: "+getLetterGrade()
+"\nGPA in course: "+numberGrade;
}
//GETTERS
public String getCourseID(){
return courseID;
}
public String getLetterGrade(){
return letterGrade;
}
public Double getNumberGrade(){
return numberGrade;
}
}
성적 증명서 파일 :
여기 당신이 그것을 모두가 무엇인지보고 싶다면 클래스 파일을 모두입니다
public class Transcript {
private ArrayList<Course> classesTaken = new ArrayList<Course>();
public Transcript(String studentID, String studentName){
System.out.println("\nStudent ID: "+studentID+"\nStudent Name: "+studentName);
}
public void addCourse(String courseID, String letterGrade){
Course myCourse = new Course(courseID,letterGrade);
classesTaken.add(myCourse);
}
public void addCourse(){
Course myCourse = new Course();
classesTaken.add(myCourse);
}
public void updateCourse(String courseID, String newLetterGrade){
for(int i= 0; i<classesTaken.size(); i++){
if(classesTaken.get(i).equals(courseID)){
classesTaken.get(i).updateGrade(newLetterGrade);
}
}
}
public void getGPA(){
System.out.println("\nOverall GPA: "+calculateGPA());
}
private Double calculateGPA(){
Double overallGPA = 0.0;
for(int i=0; i<classesTaken.size(); i++){
overallGPA = classesTaken.get(i).getNumberGrade()+overallGPA;
}
return overallGPA/classesTaken.size();
}
public void printArray(){
for(int i=0; i<classesTaken.size(); i++){
System.out.println("\n"+classesTaken.get(i));
}
}
}
그것은 많은 도움이 될 것 "대본"과 "클래스 촬영"이 있습니다. –
classTaken.contains()가해야 할 일에 대해서도 궁금합니다. 루프 내부에서 호출하고 있지만 인수로 "i"를 사용하지 않으므로 루프 외부에서 호출하지 않는 것이 좋습니다. 아니면 수업을 의미 했나요? Take (i). contains()? –