개체 배열에 대한 입력 문제

매트

사람의 이름, 시험 과목, 시험 점수에 대한 데이터를받는 클래스를 만들려고합니다. 지금까지 이러한 수업이 있습니다.

APExam :

public class APExam {
   //instance variables
   private String mySubject;
   private int myScore;
   
   //constructors
   public APExam(String subject, int score) {
      mySubject = subject;
      myScore = score;
   }
   public APExam() {
      mySubject = "";
      myScore = 1;
   }
   
   //getters and setters
   public void setSubject(String s) {
      mySubject = s;
   }
   public String getSubject() {
      return mySubject;
   }
   public void setScore(int score) {
      myScore = score;
   }
   public int getScore() {
      return myScore;
   }
   
   //compareTo
   public String compareTo(int s) {
      if(myScore == s)
         return "Scores are equal.";
      else if(myScore > s)
         return "The first score is greater than the second score.";  
      else 
         return "The second score is greater than the first score.";
   }
   
   //equals
   public boolean equals(String str) {
      return mySubject.equals(str);
   }
   
   //toString
   public String toString() {
      return "Subject: " + mySubject + "\nScore: " + myScore;
   }
}

APS 학생 :

public class APStudent {
   //instance variables
   private String myFirstName;
   private String myLastName;
   private ArrayList<APExam> myExams = new ArrayList<APExam>();
   
   //constructors
   public APStudent(String fname, String lname) {
      myFirstName = fname;
      myLastName = lname;
   }
   public APStudent() {
      myFirstName = "";
      myLastName = "";
   }
   
   //getters and setters
   public void setFirstName(String fname) {
      myFirstName = fname;
   } 
   public String getFirstName() {
      return myFirstName;
   }
   public void setLastName(String lname) {
      myLastName = lname;
   }
   public String getLastName() {
      return myLastName;
   }
   public ArrayList<APExam> getExams() {
      return myExams;
   }
   
   //addExam
   public void addExam(APExam ex) {
      myExams.add(ex);
   }
   
   //computeExamAverage
   public double computeExamAverage(List<APExam> exams) {
      int sum = 0;
      for(int i = 0; i < exams.size(); i++) {
         sum += exams.get(i).getScore();
      }
      return (double) sum / exams.size();
   }
   
   //findHighestExamScore
   public int findHighestExamScore(List<APExam> exams) {
      int max = exams.get(0).getScore();
      for(APExam ex : exams) {
         if(ex.getScore() > max) {
            max = ex.getScore();
         }
      }
      return max;
   }
   
   //numberOfFives
   public int numberOfFives(List<APExam> exams) {
      int fiveCount = 0;
      for(APExam ex : exams) {
         if(ex.getScore() == 5) {
            fiveCount++;
         }
      }
      return fiveCount;
   }
}

ArrayListTest :

public class ArrayListTest {
   public static void main(String[] args) {
      //instance variables
      final String QUIT = "end";
      Scanner sc = new Scanner(System.in);
      ArrayList<APExam> myExams = new ArrayList<APExam>();
      APStudent student = new APStudent();
      String fname, lname, sub, input = "";
      int score;
      
      //prompt for info
      System.out.print("Enter first name: ");
      fname = sc.nextLine();
      student.setFirstName(fname);
      System.out.print("\nEnter last name: ");
      lname = sc.nextLine();
      student.setLastName(lname);
      while(!input.equals(QUIT)) {
         APExam ap = new APExam();
         System.out.print("\nEnter exam subject or 'end' to quit: ");
         input = sc.nextLine();
         sub = input;
         ap.setSubject(sub);
         System.out.print("\nEnter exam score: ");
         score = sc.nextInt();
         ap.setScore(score);
         student.addExam(ap);
         sc.nextLine();
         
      }
      
      //display information
      System.out.println(student.getExams());
      System.out.println("Name: " + student.getFirstName() + " " + student.getLastName());
      System.out.println("Exam average score: " + student.computeExamAverage(myExams));
      System.out.println("Highest score: " + student.findHighestExamScore(myExams));
      System.out.println("Number of fives: " + student.numberOfFives(myExams));
      
      System.out.println();
      
      
      for(int i = 0; i < myExams.size(); i++) {
         System.out.println(myExams.get(i));
      }
      
      //prompt for search
      System.out.println("1 sequential search" 
                        + "\n2 binary search"
                        + "\n3 exit");
      input = sc.nextLine();
      while(!((input.equals("1") || input.equals("2") || input.equals("3")))) {
         switch(input) {
            case "1":
               sequentialSearch(myExams, 3);
               break;
            case "2":
               binarySearch(myExams, 2);
               break;
            case "3":
               break;
         }
      }
   }
}

어떤 이유로 ArrayListTest 클래스에서는 입력 된 점수와 주제로 APExam 개체를 만들지 않습니다. while 루프에 문제가 있습니까? 아니면 다른 문제가 있습니까?

AP11

문제는 어떤 이유로 변수 List<APExam> exams를 함수에 전달한다는 것 입니다. 당신이 그것을 할 때 당신은 빈을 전달하고 ArrayList<APExam>그것이 IndexOutOfBoundsException.

아무것도 전달하지 말고 APStudentmyExams목록을 사용하십시오 .

public double computeExamAverage() {
    double sum = 0;
    for (APExam myExam : myExams) {
        sum += myExam.getScore();
    }
    return sum / myExams.size();
}

public int findHighestExamScore() {
    int max = 0;
    for(APExam exam : myExams) {
        if(exam.getScore() > max) max = exam.getScore();
    }
    return max;
}

public int numberOfFives() {
    return (int) myExams.stream().filter(apExam -> apExam.getScore() == 5).count();
}

편집 : 나는 당신의 주요 방법에 대해서도 언급하고 싶습니다. 기본 생성자와 setter 대신 매개 변수화 된 생성자를 사용해야합니다. 그리고 "end"점수를 요청하기 전에 입력이 있는지 확인해야합니다 .

public static void main(String[] args) {
    final String QUIT = "end"; // not really necessary, but ok
    Scanner sc = new Scanner(System.in);
    String firstName, lastName, subject;
    int score;

    //prompt for info
    System.out.print("Enter first name: ");
    firstName = sc.nextLine();
    System.out.print("\nEnter last name: ");
    lastName = sc.nextLine();
    APStudent student = new APStudent(firstName, lastName); // use of parametrized constructor
    while(true) {
        System.out.print("\nEnter exam subject or 'end' to quit: ");
        subject = sc.nextLine();
        if (subject.equals(QUIT)) break; // check if user wants to end it
        System.out.print("\nEnter exam score: ");
        score = sc.nextInt();
        student.addExam(new APExam(subject, score));  // use of parametrized constructor
        sc.nextLine();
    }
    sc.close(); // never forget to close Scanner

    //display information etc.
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

개체에 대한 액세스 문제

분류에서Dev

루프에서 lm ()에 대한 문자열 입력 문제

분류에서Dev

객체 배열에 대한 자바 스크립트 객체 배열 입력

분류에서Dev

Web API에 대한 입력 매개 변수로 다중 배열

분류에서Dev

배열의 문자 요소를 사용자 입력으로 입력 한 다른 문자로 대체

분류에서Dev

배치 cmd 파일에서 문자열 입력 제한

분류에서Dev

에 대한 배열 문제

분류에서Dev

대체 최소 제곱에 대한 입력

분류에서Dev

부호없는 문자 배열에 대한 입력

분류에서Dev

부호없는 문자 배열에 대한 입력

분류에서Dev

개체 배열에서 일치하는 objectId에 대한 전체 문서 삭제-MongoDB

분류에서Dev

URL 문자열에 대한 개체

분류에서Dev

문자열 배열 무한 루프에 대한 C ++ 사용자 입력

분류에서Dev

배열에 대한 gcc 인라인 asm 입력 및 출력 매개 변수?

분류에서Dev

배열에서 다른 개체 배열과 동일한 개체 삭제

분류에서Dev

한 입력 문자열이 다른 입력 문자열의 하위 문자열 인 경우 문자열 대체

분류에서Dev

Java에서 문자열 배열에 대한 사용자 입력 가져 오기

분류에서Dev

Java에서 문자열 배열에 대한 사용자 입력 가져 오기

분류에서Dev

bash 스크립트에서 두 개의 sed 대체 문제 및 많은 입력 파일을 반복하고 출력하는 문제

분류에서Dev

JSON 객체의 배열에 대한 문자열 배열

분류에서Dev

자바 스트림 :지도에 수집에 대한 문제 <문자열, 개체>

분류에서Dev

중국어 번체 문자에 대한 병음 입력?

분류에서Dev

6 개 요소의 문자 배열에 대한 입력 값에 대한 루핑 명령이 3 개 입력 후에 중지되는 이유는 무엇입니까?

분류에서Dev

개체를 가리키는 포인터에 대한 포인터 배열 삭제

분류에서Dev

개체 배열에 대한 NullPointerException

분류에서Dev

PHP 개체에 대한 다중 배열

분류에서Dev

"배열"에 대한 JSON 개체

분류에서Dev

배열에 대한 개체 키

분류에서Dev

입력 한 문자열의 각 개행 문자에 대한 결과 집합에 새 행을 만듭니다.

Related 관련 기사

  1. 1

    개체에 대한 액세스 문제

  2. 2

    루프에서 lm ()에 대한 문자열 입력 문제

  3. 3

    객체 배열에 대한 자바 스크립트 객체 배열 입력

  4. 4

    Web API에 대한 입력 매개 변수로 다중 배열

  5. 5

    배열의 문자 요소를 사용자 입력으로 입력 한 다른 문자로 대체

  6. 6

    배치 cmd 파일에서 문자열 입력 제한

  7. 7

    에 대한 배열 문제

  8. 8

    대체 최소 제곱에 대한 입력

  9. 9

    부호없는 문자 배열에 대한 입력

  10. 10

    부호없는 문자 배열에 대한 입력

  11. 11

    개체 배열에서 일치하는 objectId에 대한 전체 문서 삭제-MongoDB

  12. 12

    URL 문자열에 대한 개체

  13. 13

    문자열 배열 무한 루프에 대한 C ++ 사용자 입력

  14. 14

    배열에 대한 gcc 인라인 asm 입력 및 출력 매개 변수?

  15. 15

    배열에서 다른 개체 배열과 동일한 개체 삭제

  16. 16

    한 입력 문자열이 다른 입력 문자열의 하위 문자열 인 경우 문자열 대체

  17. 17

    Java에서 문자열 배열에 대한 사용자 입력 가져 오기

  18. 18

    Java에서 문자열 배열에 대한 사용자 입력 가져 오기

  19. 19

    bash 스크립트에서 두 개의 sed 대체 문제 및 많은 입력 파일을 반복하고 출력하는 문제

  20. 20

    JSON 객체의 배열에 대한 문자열 배열

  21. 21

    자바 스트림 :지도에 수집에 대한 문제 <문자열, 개체>

  22. 22

    중국어 번체 문자에 대한 병음 입력?

  23. 23

    6 개 요소의 문자 배열에 대한 입력 값에 대한 루핑 명령이 3 개 입력 후에 중지되는 이유는 무엇입니까?

  24. 24

    개체를 가리키는 포인터에 대한 포인터 배열 삭제

  25. 25

    개체 배열에 대한 NullPointerException

  26. 26

    PHP 개체에 대한 다중 배열

  27. 27

    "배열"에 대한 JSON 개체

  28. 28

    배열에 대한 개체 키

  29. 29

    입력 한 문자열의 각 개행 문자에 대한 결과 집합에 새 행을 만듭니다.

뜨겁다태그

보관