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

작성자 없음

작성자 정보가 삭제된 글입니다.

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

메서드 질문

작성

·

103

0

//검증로직
private boolean IsNotValidHour(int hour){
        return hour < 0 || hour > 23;
    }
private boolean IsNotValidMINSEC(int time){
        return time < 0 || time >59;
    }

//메서드 정의
public void printTime(){
        Scanner scanner = new Scanner(System.in);
        while (true){
            System.out.print("시간을 입력하세요 : ");
            hour = scanner.nextInt();
            if(IsNotValidHour(hour)){
                System.out.println("다시 입력하세요.");
                continue;
            } 
                this.hour = hour;
            

            System.out.print("분을 입력하세요 : ");
            minute = scanner.nextInt();
            if(IsNotValidMINSEC(minute)){
                System.out.println("다시 입력하세요.");
                continue;
            } 
                this.minute = minute;
            

            System.out.print("초를 입력하세요 : ");
            second = scanner.nextInt();
            if(IsNotValidMINSEC(second)){
                System.out.println("다시 입력하세요.");
                continue;
            } 
                this.second = second;
            

            System.out.println("현재 시간 : " + hour+"시 " + minute+"분 " + second+"초");
 }
}

Time 클래스에 해당 메서드를 정의하고 입력값을 받아 시간을 초기화하고 출력하는 로직을 작성했습니다.

메서드 정의 시간로직에서는 예를 들어 55을 입력하면 다시 입력값을 받는데 분이나 초에서 잘못된 범위를 입력하면 다시 시간 로직으로 돌아갑니다.

이어서 그대로 받고 싶은데 시 분 초 로직마다 반복문을 써야할까요?

답변 1

0

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

간단하게 제안드려본다면 while 문 밖에 시, 분, 초에 대하여 변수를 선언하고,

while 루프를 돌 때마다 각 값들이 비어있는지 체크해서 비어있지 않을 때는 이전 루프에서 입력했다는 것으로 간주하고 해당 값 입력을 건너뛰는 방법이 생각납니다!

감사합니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기