2012-11-01 2 views
-1

주어진 문자 한계 (예 : 10 자)에 대해 사용자의 입력 된 문자열을 검사하는 프로그램을 작성하려고합니다. 입력 된 문자열이 10자를 넘으면 시스템은 유효한 문자열 (사용자가 유효한 문자열을 입력 할 때까지 10 자의 단어)을 다시 입력하라는 메시지를 다시 표시해야합니다.입력 된 문자열을 조건이있는 루프에서 확인하는 방법은 무엇입니까?

이미 코드 조각이 있지만 작동하지 않는 이유는 사용자에게 다시 프롬프트를 표시하기 위해 프로세스를 시작하는 방법을 모르고서 (또는 줄이기 위해) 다른 간단한 방법이 있기 때문입니다 방법? 10 개 이상의 문자 인 경우

System.out.print("Input: "); 
String inputChars = Input.readString(); 

while (inputChars.length() > 10){ 
    System.out.print("Input: "); 
    String inputChars = Input.readString(); // here is mistake now 
} 
System.out.print("Output: "); 
System.out.print("The enter has 10 chars"); 

난 그냥 다음 그냥 건너 뛰고 10 개 이상의 문자가 아닌 단어를 입력 다시 사용자에게 메시지를 표시, 입력 된 단어를 확인하시기 바랍니다. 나는 아직 자바가 좋지 않다. 그래서이 질문이 어리석은 짓이라면 어떻게 해결할 지 설명 해줘.

+0

입력은 어떤 수업입니까? 어떤 패키지? – ecbrodie

답변

3

봐 : 루프 본문의

while (inputChars.length() > 10){ 
    System.out.print("Input: "); 
    String inputChars = Input.readString(); 
} 

두 번째 줄 redeclares는inputChars 변수입니다. 이미 범위에 있기 때문에 그렇게 할 수는 없습니다.

String inputChars; 
do { 
    System.out.print("Input: "); 
    inputChars = input.readString(); 
} while (inputChars.length() > 10); 

참고 나는 또한 inputInput 변수의 이름을 변경하는 방법 : 당신은 또한 비록 중복을 피하기 위해 코드를 구조 조정 고려해야한다

inputChars = Input.readString(); 

: 당신은 가 이전 값을 대체 할 일반적인 Java 명명 규칙을 따르십시오. 사실 더 과 inputChars을 모두 변경하여 더 구체적으로 설명 할 수 있습니다. 특히 입력 데이터의 의미가 인 것을 나타내는 순간은 현재입니다. 당신이 변수를 재 선언 할 필요가 없었다, 그래서

String inputChars = "" 
do { 
    System.out.print("Input: "); 
    inputChars = Input.readString(); 
} while (inputChars.length() > 10) 
System.out.print("Output: "); 
System.out.print("The enter has 10 chars"); 

, 전에 inputChars 이미 루프 전에 선언했다 :에

+0

고마워 Jon Skeet, 실수를 범했습니다. var inputChar – Dozent

+0

@Dozent : 그래,하지만 그 실수는 수정하지 마라. 내가 언급 한 다른 방법으로 코드를 개선하려고 노력하라. 너무. –

1

그냥 처음에 String를 제거 사전에 감사 :

while (inputChars.length() > 10){ 
    System.out.print("Input: "); 
    inputChars = Input.readString(); // here is mistake now 
    } 

처음에 String을 가짐으로써, 다시 재정의 동일한 이름의 변수를 시도하고있다. 루프에서

+0

힌트를 보내 주셔서 감사합니다. – Dozent

+0

@Dozent : 도움이 되었다면 답을 수락하는 것을 잊지 마십시오. –

0

변경합니다.

do-while 루프는 의도를 명확하게하고 코드를보다 깨끗하게 만들기 때문에 더 나은 구조입니다.

관련 문제