inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

캡슐화

문제풀이 응용버전

해결된 질문

405

옙버디

작성한 질문수 23

0

안녕하세요. 문제풀이를 보다보니 접근제어자 강의가 접근제어자에 관한 강의인 것인지 아님 만든 클래스를 바탕으로 접근제어자를 통해서 불러 들이는 것에 관한 내용인지 헷갈리지만 계속 강의를 들으면서 이해하려고 노력 중입니다.

 

스크린샷 2024-01-03 11.37.26.png스크린샷 2024-01-03 11.37.58.png스크린샷 2024-01-03 11.41.10.png

회원의 닉네임과 주소를 받아 저장하는 형식의 로직과 주문할 음식 그리고 해당 음식의 가격과 수량을 받아서 출력문을 만들었습니다.

닉네임과 주소를 입력하지 않고 enter를 했을 때 다시 입력하라는 구문과 함께 재입력을 받게 하고 싶은데 아래의 결과처럼 나오게 됩니다. 어떤 부분에서 오류가 있는지 잘 모르겠습니다.
return; 도 사용해봤지만 동일하게 나오더군요.

java 객체지향

답변 1

0

나무늘보

안녕하세요. 옙버디님, 공식 서포터즈 코즈위버 입니다.

사용자가 입력을 잘못한 경우, 재 입력을 요청해야 하는데요. 이를 콘솔레벨에서 구현하기 위해선 반복문을 활용해야 합니다.

아래는 userNickName을 입력받는 부분까지 작성한 코드입니다.

do~while() 우선 do의 내용을 실행하고 이후 while () 에서 조건식을 검사하므로 콘솔에서 사용자 입력을 처리하기에 적절합니다. (그러나 콘솔 어플리케이션이 아닌 경우 while, for 문을 더 자주 사용합니다)

public class Order {

	private String userNickName;
	private String address;
	private String orderList;
	private final Scanner scanner = new Scanner(System.in);

	public void createUser() {
		do {
			System.out.print("사용자 이름을 입력하세요 :");
			userNickName = scanner.nextLine();
		} while (userNickName.isBlank());
	}
}

 

코드를 보면 화면에 사용자 이름을 입력하라는 문구를 출력하고,

scanner.nextLine(); 결과값을 userNickName 에 담습니다.

그리고 이 userNickName()이 공백인지를 확인하기 위해 isBlank() 메서드를 사용하였습니다.

.isBlank() 메서드는 String 에서 제공하는 메서드로 문자가 전부 공백인지 여부를 점검하여 결과값은 boolean 으로 반환합니다. 그래서 while() 문의 조건식으로 사용할 수 있지요. isBlank() 대신 userNickName.equals("")를 사용하여 비교하여도 괜찮습니다.

 

나머지 부분도 위를 참조하여 마무리 하실 수 있을거에요.

감사합니다.

1

옙버디

필드에 final final Scanner scanner = new Scanner(System.in);을 쓰는 이유는 왜일까요

1

나무늘보

안녕하세요 옙버디님!

Scanner는 Order 클래스의 모든 메서드에서 사용하고 있습니다. 이럴 경우 메서드를 호출할 때마다 Scanner 를 새로 생성하는 것보단 멤버 변수로 만들어 한 번만 생성하는 것이 효율적일 수 있습니다.

 

final 키워드는 변경불가 선언으로, scanner 를 메서드 내부에서 다른 Scanner 인스턴스로 덮어씌울 수 없음을 의미합니다.

감사합니다.

질문있습니다

0

30

1

1번 문제 질문입니다.

0

35

1

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

0

28

1

9장 상속 문제와 풀이 질문

0

39

1

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

0

50

2

매서드 참조값 반환??

0

67

1

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

0

72

1

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

0

85

1

공부방법

0

77

2

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

0

82

1

static method 질문

0

67

1

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

0

98

1

Method1에서 Student 객체

0

74

1

3강 18. null 질문

0

69

1

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

0

77

1

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

0

97

1

문의

0

104

1

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

0

90

1

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

0

62

1

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

0

74

1

수강기한

0

136

1

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

0

88

1

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

0

87

1

추가 지식 학습

0

153

2