Java do while 루프는 입력이 유효 할 때 여전히 오류 메시지를 제공합니다.

사용자 5641451

"Specify Max Time"에 대한 do while 루프에 유효한 입력이 주어지면 루프를 중단하기 전에 오류 메시지가 계속 표시됩니다.

Scanner console = new Scanner(System.in);
System.out.println("Specify city : ");   
String city;

//loops if input is anything but New York or Paris
do { 
    city = console.next();
    if (!city.equals("New York") && !city.equals("Paris")) {
        System.out.println("Enter valid city");
    }
} while (!city.equals("New York") && !city.equals("Paris"));    
    System.out.println("Specify Max Time (HH:MM) : ");  
    String time;    

//loops if input not is in 24 hour format 
do { 
    time = console.next();  
    if (!time.matches("[0-9]{2}:[0-9]{2}")); {  
        System.out.println("Enter Valid Time (HH:MM) :");
    }                        
} while (!time.matches("[0-9]{2}:[0-9]{2}"));
Barranka

패턴 일치를 크게 단순화 할 수 있습니다.

do {
    // Your stuff goes here
} while(!time.matches("[0-9]{2}:[0-9]{2}"));
// --------------------^^^^^^^^^^^^^^^^^
// Easier, don't you think?

또한 시간 및 분 값이 유효한지 확인해야합니다. 시간 값은 0에서 23 사이 여야하고 분 값은 0에서 59 사이 여야합니다.


코드를 확인하고 유효성을 검사하는 데 충분한 시간이 있습니다. 나는 관대하다고 느끼고 지금 당장 할 일이 없기 때문에 문제에 대한 내 자신의 테스트 된 해결책을 넣었습니다 .

import java.util.Scanner;

public class SO_Example_20151205_01 {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        String pattern = "[0-9]{2}:[0-9]{2}";   // The pattern you'll use to validate if the time is valid
        String time;                            // The input variable
        boolean valid_time = false;             // A flag to break the loop. Initialized to false
        int hour, minute;

        // I prefer to use a 'while' loop in this case.
        // The loop will break if the valid_time variable is true
        while(!valid_time) {
            System.out.print("Enter time (HH:MM):\t");
            time = console.next();
            // Check if the input matches the pattern:
            if(time.matches(pattern)) {
                // Now, check if the input values are valid
                hour = Integer.parseInt(time.substring(0,2));
                minute = Integer.parseInt(time.substring(3,5));
                if(hour >= 0 && hour <= 24 && minute >= 0 && minute < 60) {
                    valid_time = true;
                } else {
                    System.out.println("\nYou've entered a valid pattern, but the values are invalid!\n Please try again");
                }
            } else {
                System.out.println("\nYou entered a non recognized pattern. Please try again\n");
            }
        }
        System.out.println("Done!");
    }
}

while루프를 사용하면 두 번 이상 작성하는 것을 피할 수 있습니다. 또한 내가 사용하는 패턴을 확인하십시오 ... 작동합니다!

나는 자주 부울 플래그를 사용하여 내 루프를 끊습니다 (아마도 더 깨끗한 솔루션은 아니지만 작동하며 루프가 중단 될 위치와시기를 정확하게 볼 수 있습니다). 또한 입력 한 시간과 분에 대한 유효성 검사를 추가했습니다.

이 솔루션은 의도적으로 장황합니다. 정확히 제가 원하는 것입니다. 이렇게하면 진행 상황을 더 쉽게 확인할 수 있습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

pip를 사용하여 설치할 때 오류 메시지이지만 pip 설치는 여전히 성공합니다.

분류에서Dev

while 루프를 삽입하려고 할 때 오류가 발생하는 이유는 무엇입니까?

분류에서Dev

Zend Framework 1.7은 입력 유효성 검사가 실패 할 때 오류 메시지와 함께 요청을 전달합니다.

분류에서Dev

jQuery 유효성 검사 필드 : 유효한 정보를 입력 할 때 사라지는 오류 메시지 가져 오기

분류에서Dev

내 코드에 출력이 표시되지 않는 이유는 무엇입니까? while 루프를 사용하여 이전에 발생한 오류를 디버깅하려고합니다.

분류에서Dev

NSTimer를 사용하여 x 초마다 함수를 실행할 때이 오류 메시지가 나타나는 이유는 무엇입니까?

분류에서Dev

nix-serve를 바이너리 캐시로 사용할 때 "오류 : 공개 키가 유효하지 않습니다"라는 클라이언트 nixos 오류

분류에서Dev

C ++ : Ctrl + d를 사용하여 입력 루프를 종료 할 때 마지막 입력이 선택되지 않는 이유는 무엇입니까?

분류에서Dev

try-except 블록을 사용하여 입력을 확인하고 while 문을 사용하여 Python에서 유효한 입력이 나올 때까지 사용자에게 메시지를 표시하는 방법은 무엇입니까?

분류에서Dev

다른 while 루프에서 while 루프를 사용할 때 오류 발생

분류에서Dev

내 PrintWriter가이 오류를 제공하는 내 메시지를 출력 할 수 없습니다. "this.output"이 null이기 때문에 "java.io.PrintWriter.println (String)"을 호출 할 수 없습니다.

분류에서Dev

시스템 호출이 실패 할 때 c 프로그램이 stderr에 오류 메시지를 인쇄하지 않는 이유는 무엇입니까?

분류에서Dev

말도 안되는 명령을 입력 할 때마다이 파이썬 오류 메시지가 생성되는 이유는 무엇입니까?

분류에서Dev

내 io를 실행할 때 java.lang.Nullpointerexception 오류 메시지가 나타나는 이유를 알 수 없습니다.

분류에서Dev

액세스 토큰을 얻으려고 할 때 " 'redirect_uri'에 제공된 값이 유효하지 않습니다."오류가 발생합니다.

분류에서Dev

do while 루프를 사용하여 다이아몬드를 인쇄 할 때 잘못된 출력

분류에서Dev

입력 값을 업데이트하기 위해 val ()을 사용할 때 jquery 메서드 html ()에 여전히 오래된 내용이있는 이유

분류에서Dev

E / launcher-유효하지 않은 세션 ID. 오이 각도기 프레임 워크를 실행할 때 오류가 발생합니다. 문제를 해결하고 여러 기능 파일을 실행하려면 어떻게해야합니까?

분류에서Dev

Formik에서 유효성 검사를 생성 할 때 오류가 발생하는 이유는 무엇입니까?

분류에서Dev

while 루프를 사용할 때 외부 변수가 변경되지 않는 이유는 무엇입니까?

분류에서Dev

개행 문자를 사용할 때 scanf while 루프가 종료되지 않는 이유는 무엇입니까?

분류에서Dev

Java 입력하는 모든 입력에 대해 While 루프가 무시되는 이유는 무엇입니까?

분류에서Dev

Java 프로그램은 오류 메시지없이 무한 루프를 유지합니다.

분류에서Dev

CreateML을 사용하여 텍스트 분류 자 모델을 생성 할 때 "오류가 발생하여 포착되지 않았습니다. 제공된 유효성 검사 데이터에 ...가 포함되어야합니다."수신

분류에서Dev

JQuery Ajax는 여러 데이터를 보낼 때 오류를 제공합니다.

분류에서Dev

우편 배달부 본문에 이메일과 비밀번호를 전달할 때 유효성 검사 파이프 오류가 발생했습니다.

분류에서Dev

Android 앱에서 텍스트를 공유 할 때 "유효한 웹 주소를 사용하십시오"라는 오류 메시지를 수정하는 방법은 무엇입니까?

분류에서Dev

for 및 while 루프를 사용할 때 다른 결과가 나타나는 이유는 무엇입니까?

분류에서Dev

while 루프를 계속할 때마다 변수가 재설정되는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    pip를 사용하여 설치할 때 오류 메시지이지만 pip 설치는 여전히 성공합니다.

  2. 2

    while 루프를 삽입하려고 할 때 오류가 발생하는 이유는 무엇입니까?

  3. 3

    Zend Framework 1.7은 입력 유효성 검사가 실패 할 때 오류 메시지와 함께 요청을 전달합니다.

  4. 4

    jQuery 유효성 검사 필드 : 유효한 정보를 입력 할 때 사라지는 오류 메시지 가져 오기

  5. 5

    내 코드에 출력이 표시되지 않는 이유는 무엇입니까? while 루프를 사용하여 이전에 발생한 오류를 디버깅하려고합니다.

  6. 6

    NSTimer를 사용하여 x 초마다 함수를 실행할 때이 오류 메시지가 나타나는 이유는 무엇입니까?

  7. 7

    nix-serve를 바이너리 캐시로 사용할 때 "오류 : 공개 키가 유효하지 않습니다"라는 클라이언트 nixos 오류

  8. 8

    C ++ : Ctrl + d를 사용하여 입력 루프를 종료 할 때 마지막 입력이 선택되지 않는 이유는 무엇입니까?

  9. 9

    try-except 블록을 사용하여 입력을 확인하고 while 문을 사용하여 Python에서 유효한 입력이 나올 때까지 사용자에게 메시지를 표시하는 방법은 무엇입니까?

  10. 10

    다른 while 루프에서 while 루프를 사용할 때 오류 발생

  11. 11

    내 PrintWriter가이 오류를 제공하는 내 메시지를 출력 할 수 없습니다. "this.output"이 null이기 때문에 "java.io.PrintWriter.println (String)"을 호출 할 수 없습니다.

  12. 12

    시스템 호출이 실패 할 때 c 프로그램이 stderr에 오류 메시지를 인쇄하지 않는 이유는 무엇입니까?

  13. 13

    말도 안되는 명령을 입력 할 때마다이 파이썬 오류 메시지가 생성되는 이유는 무엇입니까?

  14. 14

    내 io를 실행할 때 java.lang.Nullpointerexception 오류 메시지가 나타나는 이유를 알 수 없습니다.

  15. 15

    액세스 토큰을 얻으려고 할 때 " 'redirect_uri'에 제공된 값이 유효하지 않습니다."오류가 발생합니다.

  16. 16

    do while 루프를 사용하여 다이아몬드를 인쇄 할 때 잘못된 출력

  17. 17

    입력 값을 업데이트하기 위해 val ()을 사용할 때 jquery 메서드 html ()에 여전히 오래된 내용이있는 이유

  18. 18

    E / launcher-유효하지 않은 세션 ID. 오이 각도기 프레임 워크를 실행할 때 오류가 발생합니다. 문제를 해결하고 여러 기능 파일을 실행하려면 어떻게해야합니까?

  19. 19

    Formik에서 유효성 검사를 생성 할 때 오류가 발생하는 이유는 무엇입니까?

  20. 20

    while 루프를 사용할 때 외부 변수가 변경되지 않는 이유는 무엇입니까?

  21. 21

    개행 문자를 사용할 때 scanf while 루프가 종료되지 않는 이유는 무엇입니까?

  22. 22

    Java 입력하는 모든 입력에 대해 While 루프가 무시되는 이유는 무엇입니까?

  23. 23

    Java 프로그램은 오류 메시지없이 무한 루프를 유지합니다.

  24. 24

    CreateML을 사용하여 텍스트 분류 자 모델을 생성 할 때 "오류가 발생하여 포착되지 않았습니다. 제공된 유효성 검사 데이터에 ...가 포함되어야합니다."수신

  25. 25

    JQuery Ajax는 여러 데이터를 보낼 때 오류를 제공합니다.

  26. 26

    우편 배달부 본문에 이메일과 비밀번호를 전달할 때 유효성 검사 파이프 오류가 발생했습니다.

  27. 27

    Android 앱에서 텍스트를 공유 할 때 "유효한 웹 주소를 사용하십시오"라는 오류 메시지를 수정하는 방법은 무엇입니까?

  28. 28

    for 및 while 루프를 사용할 때 다른 결과가 나타나는 이유는 무엇입니까?

  29. 29

    while 루프를 계속할 때마다 변수가 재설정되는 이유는 무엇입니까?

뜨겁다태그

보관