2014-09-25 2 views
-2

제 목표는 단어의 첫 글자를 취해서 첫 글자가 모음이 될 때까지 끝까지 이동시키는 것입니다. 이것은 당신이 변수 x에 검사 일을 계속누군가 내가 왜 루프에 갇혀 있는지 알아낼 수 있습니까? 그리고 더 간단하게 쓸 수 있습니까?

System.out.println("Enter a word: "); 
    String word = keyboard.nextLine(); 
    String y = word.substring(0,1); 
    String z = word.substring(1); 

    char x = Character.toLowerCase(word.charAt(0)); 

    if ((x=='a') || (x=='e') || (x=='i') || (x=='o') || (x=='u')) { 
     System.out.println(word + "ay "); 
    } 

    while ((x!='a') || (x!='e') || (x!='i') || (x!='o') || (x!='u')) { 
     String s = z+y; 
     System.out.println(s); 
    } 

답변

0

사용자의 실수는 while 루프에서 x의 값을 업데이트하지 않는다는 것입니다. 따라서 프로그램이 절대로 종료되지 않습니다. "돼지 라틴"을 더 읽기 쉽고 디버그하기 쉽게하기 위해 프로그램을 으로 깨는 것을 고려해야합니다.

같은 :

public static boolean isVowel(char input){ 
    input = Character.toLowerCase(input); 
    return ((input=='a') || (input=='e') || (input=='i') || (input=='o') || (input=='u')); 
} 

그래서 당신은 할 수있을 것입니다 :

System.out.println("Enter a word: "); 
String word = keyboard.nextLine(); 

while (!isVowel(word.charAt(0))){ //while the first character isn't a vowel do this: 
    word = word.substring(1) + word.charAt(0); 
} 

System.out.println(word); 

그러나 어떤 모음이없는 경우이 프로그램이 여전히 무한 루프로 실행됩니다 조심.

이 방법없이 코드는 다음과 같이 보일 것입니다 :

System.out.println("Enter a word: "); 
String word = keyboard.nextLine(); 

char currentChar = Character.toLowerCase(word.charAt(0)); 
while (!((currentChar=='a') || (currentChar=='e') || (currentChar=='i') || (currentChar=='o') || (currentChar=='u'))){ //while the first character isn't a vowel do this: 
    word = word.substring(1) + word.charAt(0); 
    currentChar = Character.toLowerCase(word.charAt(0)); 
} 

System.out.println(word); 

희망이 도움이 :) 또한

+0

네, 조금 도움이됩니다. 하지만 지금은 아직 방법을 사용하지 않고 있습니다. 전체 전체 코드는 어떻게 보입니까? – duBz180

+0

@ duBz180 메소드를 사용하지 않고 작동해야하는 코드 블록을 추가했습니다. – StephenButtolph

0

라틴어 돼지,하지만 당신은 루프 본문에서 그 값을 업데이트하지 않습니다. 따라서 조건은 계속 확인됩니다. 다른 말로하면

  1. 첫 번째 반복 : x가 모음과 다른가요?
  2. 그렇다면 문자열을 만들고 인쇄하십시오.
  3. 두 번째 반복 : x가 모음과 다른가요?
  4. 2 ...와 동일합니다.
+1

,'x'는 항상하지 ''a'' _or_하지 ''e'' 될 것입니다 _or_ ... – rgettman

관련 문제