inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

클래스가 필요한 이유

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

332

안주희

작성한 질문수 3

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();

 

java 객체지향

답변 1

0

OMG

안녕하세요. 안주희님, 공식 서포터즈 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]);
    }
}

 

감사합니다.

질문있습니다

0

23

1

1번 문제 질문입니다.

0

29

1

음악플레이어 문제 중 코드질문

0

24

1

9장 상속 문제와 풀이 질문

0

35

1

강의 자료에 사소한 오타가 있습니다.

0

46

2

매서드 참조값 반환??

0

63

1

접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드

0

67

1

자바 기본편 - .(dot)에 관한 질문입니다!

0

83

1

공부방법

0

72

2

상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?

0

80

1

static method 질문

0

63

1

캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요

0

93

1

Method1에서 Student 객체

0

71

1

3강 18. null 질문

0

65

1

this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?

0

73

1

팩토리 메서드 패턴과 일반 생성자 사용의 장단점

0

95

1

문의

0

102

1

9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다

0

87

1

상속과 그에 따른 메모리 구조 질문

0

59

1

call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다

0

72

1

수강기한

0

133

1

기본편 객체지향 프로그래밍에 대한 정의

0

84

1

섹션10 상속 메모리 구조 및 문제 관련 질문

0

85

1

추가 지식 학습

0

150

2