2017-04-13 11 views
0

私のプログラムを終了していますが、まだ答えが見つからないような問題が残っています。私は既に尋ねられた質問を見てきましたが、私はこのケースで私の質問に具体的に答える何かを見つけることができませんでした。これは、ユーザーが文字列を入力して母音や子音の数などを数えるプログラムです。この後、ユーザーはyを押すとプログラムを繰り返し、新しい文字列を入力するオプションが表示されます。彼/彼女はn等を押す。ユーザがyを押してプログラムを繰り返すと、0の母音と子音があることが表示されます。私はそれが自分のコードの始めに何かあることを知っていますここで私はint consonant_count = 0を持っていますが、私はちょうど何を動かすのかとどこを動かすのか分かりません。 Ps。これは、nextLineが問題であることを知らなかったので、重複としてフラグを立てるべきではありません。ここでは、コードは次のようになります。Java、プログラムの先頭からループが始まらない

import java.util.Scanner; 
public class loop2 
{ 
    public static void main (String[] args) 
    { 
     Scanner inputReader = new Scanner (System.in); 
     char result='y'; 

     do { 
      // ’Nytto’-kod: 
      int vowels_count = 0; 
      int consonents_count = 0; 
      int charachters_count= 0; 
      System.out.println("Skriv in en text"); 
      String str = inputReader.nextLine(); 
      String str2 = str.toLowerCase(); 
      char[] chr = str2.toCharArray(); 

      for(int i=0;i<chr.length;i++) 
      { 
       if(chr[i] == 'a' || chr[i]== 'e' || chr[i] == 'i' || chr[i] == 'o' || chr[i] == 'u') 
        vowels_count++; 
       else if(chr[i] == '-' || chr[i] == '!' || chr[i] == '?' || chr[i] == ',' || chr[i] == '.' || chr[i] == ':' || chr[i] == ';') 
        charachters_count++; 
       else 
        consonents_count++; 
      } 

      System.out.println("Antalet vokaler:"+vowels_count+ " "+"Antalet konsonanter:"+consonents_count+" "+"Antalet interpunktionstecken:"+charachters_count++); 
      // Kod f ̈or hantering av repetition 
      System.out.println ("För att upprepa: Skriv y"); 
      System.out.println ("För att avsluta: Skriv n"); 
      String repeat=inputReader.next();// H ̈amta anv ̈andarens svar. 
      result=repeat.charAt(0); 
      if(result=='y') 
      { 
       continue; 
      } 
      else if(result !='y' && result !='n') 
      { 
       System.out.println("Du får bara skriva y eller n, försök igen!"); 
       result='y'; 
      } 
      else 
      { 
       System.out.println ("Klart."); 
       inputReader.close(); 
      } 

      } 
     while (result == 'y'); // Observera semikolon! 

    } 
} 
+0

0私はまた、ユーザーの入力がyよりも何か他のものである場合や、同じことが起こることを追加する必要がありますnを入力すると、プログラムを再試行するように指示するメッセージが表示され、プログラムはそれ自体を繰り返す必要があります。 – mackanmorre

+0

"aeiou" .indexOf(z)<0母音をテストする方が良い、2番目のテストのためのidem – azro

答えて

0

あなたはnextLineを(使用する必要があります)、ユーザからの入力を読み込むときに、これはあなたの次の(後に残さする内容である改行文字「\ n」は)の端部を含む、すべてをつかみます呼び出してから、nextLine()は、あなたが0のカウントを与える「\ n」をつかむ母音とconsonents

Scanner inputReader = new Scanner (System.in); 
    char result='y'; 
    while(result == 'y') 
    { 
     // ’Nytto’-kod: 
     int vowels_count = 0; 
     int consonents_count = 0; 
     int charachters_count= 0; 
     System.out.println("Skriv in en text"); 
     String str = inputReader.nextLine(); 
     String str2 = str.toLowerCase(); 
     char[] chr = str2.toCharArray(); 

     for(int i=0;i<chr.length;i++) 
     { 
      if(chr[i] == 'a' || chr[i]== 'e' || chr[i] == 'i' || chr[i] == 'o' || chr[i] == 'u') 
       vowels_count++; 
      else if(chr[i] == '-' || chr[i] == '!' || chr[i] == '?' || chr[i] == ',' || chr[i] == '.' || chr[i] == ':' || chr[i] == ';') 
       charachters_count++; 
      else 
       consonents_count++; 
     } 

     System.out.println("Antalet vokaler:"+vowels_count+ " "+"Antalet konsonanter:"+consonents_count+" "+"Antalet interpunktionstecken:"+charachters_count++); 
     //wrap your play again logic in another do/while where you 
     // ask for y or n until they enter either one 
     do { 
      System.out.println ("För att upprepa: Skriv y"); 
      System.out.println ("För att avsluta: Skriv n"); 
      String repeat=inputReader.nextLine();//read the entire next line <---- 
      result=repeat.charAt(0); 
      if(result=='y') 
      { 
       continue; 
      } 
      else if(result !='y' && result !='n') 
      { 
       System.out.println("Du får bara skriva y eller n, försök igen!"); 
      } 
      else 
      { 
       System.out.println ("Klart."); 
       inputReader.close(); 
      } 
     } while (result !='y' && result !='n'); 
    } 
+0

ありがとう!これは私がyを押すと完全に動作します。しかし、私はyまたはn以外の何かを押すと、ユーザーが文字列を入力する必要があるときからプログラムを繰り返しますが、それ自体を繰り返し、ユーザーにyまたはnを入力するように要求する必要があります。私がそこで何を変えることができるか知っていますか? – mackanmorre

+0

別のdo/whileを追加して、ユーザが何かを入力するまで尋ねるのを助けます@mackanmorre –

+0

ありがとうございます! – mackanmorre

関連する問題