인프런 커뮤니티 질문&답변

안주희님의 프로필 이미지
안주희

작성한 질문수

김영한의 실전 자바 - 기본편

클래스가 필요한 이유

클래스 강의 중, 주어진 코드를 배열로 구현해보는 예제에 대한 질문

작성

·

242

·

수정됨

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
안녕하세요. 자바 기본편 수강을 막 시작한 수강생입니다. 

섹션 1. 클래스 - 클래스가 필요한 이유' 강의 내 첫번째 예제가 주어진 코드를 배열을 통하여 구현하는 것이었는데요,

선생님께서는 배열의 변수를 선언하실 때 배열의 값을 적으셨는데,
저는 배열의 값을 Scanner를 통해 직접 입력하고 싶어서 아래의 코드를 만들어보았습니다. (코드 중 일부입니다.)

배열의 변수는 앞에서 선언하였고, for문을 통해 배열의 값을 채우며 배열을 완성시켰습니다. 

 

문제는 코드를 실행해보니 일어났는데요, 학생의 이름만 아예 출력되지 않습니다.
null로 출력되는 것도 아니고, 입력값이 읽히지 않은 것처럼 아래와 같이 빈 상태로 실행 됩니다. 학생의 점수와 나이는 올바르게 출력됩니다. 다른 에러는 없습니다.

출력 예시) 이름: 나이: 22 성적: 2 

 

중간의 input.nextLine(); 을 혹시나 해서 지워보고 실행해봤지만
결과는 아래와 같이 출력되었고, 이름의 값 입력이 불가능해졌습니다.

출력 예시) 학생 이름을 입력하세요: 학생 나이를 입력하세요: 

 

해결 방법을 알고 싶습니다. 감사합니다.

 

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("학생 수를 입력하세요: ");
    int students = input.nextInt();

    String[] studentsNames = new String[students];
    int[] studentsAges = new int[students];
    int[] studentsGrades =  new int[students];

    for (int i = 0; i < students; i++) {
        System.out.print("학생 이름을 입력하세요: ");
        studentsNames[i] = input.nextLine();
        System.out.print("학생 나이를 입력하세요: ");
        studentsAges[i] = input.nextInt();
        System.out.print("학생 점수를 입력하세요: ");
        studentsGrades[i] = input.nextInt();

 

답변 1

0

안녕하세요. 안주희님, 공식 서포터즈 OMG입니다.

코드 일부만 올리셔서 정확한 확인은 불가능하지만, 아래의 코드와 비교해보시면 될 것 같습니다 😀

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("학생 수를 입력하세요: ");
    int students = input.nextInt();
    input.nextLine();

    String[] studentsNames = new String[students];
    int[] studentsAges = new int[students];
    int[] studentsGrades =  new int[students];

    for (int i = 0; i < students; i++) {
       System.out.print("학생 이름을 입력하세요: ");
       studentsNames[i] = input.nextLine();
       System.out.print("학생 나이를 입력하세요: ");
       studentsAges[i] = input.nextInt();
       System.out.print("학생 점수를 입력하세요: ");
       studentsGrades[i] = input.nextInt();
       input.nextLine();
    }

    for (int i = 0; i < students; i++) {
       System.out.println("이름: " + studentsNames[i] + ", 나이: " + studentsAges[i] + ", 성적: " + studentsGrades[i]);
    }
}

 

감사합니다.

안주희님의 프로필 이미지
안주희

작성한 질문수

질문하기