2015-01-06 3 views
0

두 번째 단어를 입력 할 때 반복하지 않는 숙제를 위해 일부 코드에 문제가 있습니다. 나는 자바에 상당히 익숙하다. 그래서 어떤 도움을 주시면 감사하겠습니다. 감사합니다두 번째로 내 코드가 실행되지 않는 이유는 무엇입니까?

class Main 
{ 
    public static void main(String args[]) 
    { 
     System.out.print("#Please enter a word : "); 
     String word = BIO.getString(); 

     int i, length, vowels = 0; 
     String j; 
     length = word.length(); 
     for (i = 0; i < length; i++) 
     { 

      j = word.substring(i, i + 1); 

      if (j.equalsIgnoreCase("a") == true) 
       vowels++; 
      else if (j.equalsIgnoreCase("e") == true) 
       vowels++; 
      else if (j.equalsIgnoreCase("i") == true) 
       vowels++; 
      else if (j.equalsIgnoreCase("o") == true) 
       vowels++; 
      else if (j.equalsIgnoreCase("u") == true) 
       vowels++; 
     } 
     System.out.print("[ " + vowels + "] vowels in " + "\""+word+"\""); 

     System.out.print("\n"); 

     System.out.print("#Please enter a word : "); 
     word = BIO.getString(); 

    } 
} 
+4

가장 좋은 방법은 손을 디버깅하는 것입니다. IDE가 있다면 쉽게 디버깅 할 수 있습니다. – Khanna111

+0

루프에서 퇴장 상태를 벗어나 루프를 종료하지 마십시오. Firslty, 루프는 입력 문자열에 대해 한 번 실행됩니다. do-while(); –

답변

2

예상 한 결과를 얻으려면 코드를 루프 안에 중첩시켜야합니다. 예 :

class Main 
{ 
public static void main(String args[]) 
{ 
    System.out.print("#Please enter a word : "); 
    String word = BIO.getString(); 

    while(!word.equals("QUIT")){ 

     int i, length, vowels = 0; 
     String j; 
     length = word.length(); 
     for (i = 0; i < length; i++) 
     { 

      j = word.substring(i, i + 1); 

      if (j.equalsIgnoreCase("a") == true) 
       vowels++; 
      else if (j.equalsIgnoreCase("e") == true) 
       vowels++; 
      else if (j.equalsIgnoreCase("i") == true) 
       vowels++; 
      else if (j.equalsIgnoreCase("o") == true) 
       vowels++; 
      else if (j.equalsIgnoreCase("u") == true) 
       vowels++; 
     } 
     System.out.print("[ " + vowels + "] vowels in " + "\""+word+"\""); 

     System.out.print("\n"); 

     System.out.print("#Please enter a word : "); 
     word = BIO.getString(); 
    } 

} 

이렇게하면 QUIT이라는 단어를 입력 할 때까지 코드가 반복됩니다.

0

두 번째 입력이 실행 된 후 프로그램이 종료됩니다. while(true) 블록을 특수 입력 (예 : "quit"또는 빈 문자열)과 함께 사용하여 break 루프를 만듭니다.

0

while 루프는 원하는 것을 얻기위한 최선의 방법입니다. 위에서 언급했듯이, 당신은 당신을 포함시키지 않았습니다.

System.out.print ("# 단어를 입력하십시오 :"); word = BIO.getString();

일부 루프 유형입니다. 코드가 다르게 실행될 것으로 기대할 수는 없습니다. do-while에 포함 시키면 잘 수행되어야합니다. 수정 된 예제는 이미 위에 응답되었습니다.

관련 문제