2014-06-09 2 views
-1

사용자 입력이 문자열인지 확인하려면 어떻게해야합니까?문자열에 대한 사용자 입력 확인

System.out.println("What kind of crust would you like?"); 
    crust = scan.next(); 
    while(!crust.equals(scan.hasNext())) <===(PROBLEM, THIS DOES NOT WORK) 
     { 
     System.out.println("Pick a valid choice."); 
     crust = scan.next 
+0

크러스트가 이미 검사 할 필요가없는 문자열 –

+0

'! crust.equals (scan.hasNext())) ??????? 너 뭐하려고? –

+2

남자, 질문을 읽어보십시오. 3 가지 의견은 의미가 없거나 나쁜 해결책입니다. 'Scanner # next' **는 ** 문자열을 반환합니다. 'instanceof'는 필요 없습니다. –

답변

0

스캐너는 .next() 방법으로 문자열을 읽습니다. 다음 토큰은 처리 된 문자열로 자동 읽어 들여집니다. 프로그램이 빵 껍질을 요구할 때 123과 같은 것을 입력하면 빵 껍질 변수는 숫자 123이 아닌 문자열 "123"을 유지합니다.

.hasNext() 함수가 부울을 반환하기 때문에 while 루프가 작동하지 않습니다 반면에 크러스트는 항상 문자열입니다. 당신이 "지각"어떤 숫자가 없습니다 있는지 확인하거나 정규식을 사용하려면 문자

boolean containsNumber = false; 
for (int i = 0; i < crust.length(); i++) { 
    if (Character.isDigit(crust.charAt(i))) { 
     containsNumber = true; 
     break; 
    } 
} 

숫자인지 아닌지

또는 문자열의 각 문자를 통해 더 간단하게, 루프 확인 containsNumber boolean은 문자열에 숫자가 있으면 참이고 숫자가 없으면 false입니다.

+0

번호를 입력하고 여전히 입력을 허용합니다. – PatGreens

+0

containsNumber 부울을 처리하기 위해 코드를 다시 구성해야합니다. 부울을 반환하는 별도의 함수로 코드를 추가 한 다음 if 문에 "crust"문자열에 숫자 값이 들어 있는지 확인합니다. – jluckin

관련 문제