2016-11-01 8 views
0

私は非母音の数とともに文字列に含まれる母音の数をソートする必要がある学校向けのプログラムに取り組んでいます。私の先生は、ユーザーに継続を希望するかどうかを尋ねることを希望しています。そのため、プログラムを複数回実行することなく複数のテストケースを提供することができます。プログラムをループさせることに成功しましたが、私の問題は、前のテストケースの母音と母音以外の数字が次のテストケースに引き継がれることです。私は解決のためにオンラインの周りを検索してきたが、私はこれまで運がなかった。どんな助けでも大歓迎です。 (私はところで、私はまだ学ぶことがたくさん持っているプログラミングでのnoobだ。)Mapを使用してdo whileループ(Java)でデータをリセットする際の問題

import java.util.*; 
 

 
class VowelReader 
 
{ 
 
    public static void main(String[] args) 
 
    { 
 
    String line; 
 
    int vi= 0, a = 0, e = 0, o = 0, u = 0, nonvowels = 0; 
 
    String answer = null; 
 
    
 

 
    Scanner scan = new Scanner (System.in); 
 
    
 
do { 
 
    System.out.println("Enter a String to be processed for vowels: "); 
 
    line = scan.nextLine(); 
 
    
 
    for(int i = 0; i < line.length(); i++){ 
 
    char c = Character.toLowerCase(line.charAt(i)); 
 
    switch (c) 
 
    { 
 
     case 'a': 
 
     a++; 
 
     break; 
 
     case 'e': 
 
     e++; 
 
     break; 
 
     case 'i': 
 
     vi++; 
 
     break; 
 
     case 'o': 
 
     o++; 
 
     break; 
 
     case 'u': 
 
     u++; 
 
     default: 
 
     nonvowels++; 
 
     break; 
 
     } 
 
    } 
 
    System.out.println(line); 
 
    System.out.println("a- " +a); 
 
    System.out.println("e- " +e); 
 
    System.out.println("i- " +vi); 
 
    System.out.println("o- " +o); 
 
    System.out.println("u- " +u); 
 
    System.out.println("Non-vowels -" +nonvowels); 
 
    
 
    System.out.println("Continue?(Y/N)"); 
 
     answer = scan.nextLine(); 
 
     } 
 
     while(answer.toLowerCase().equals("y")); 
 
       
 
    } 
 
}

+1

文字通り、ループの最後に0に設定することができます。より良い方法は、それ自身の関数にループコードを置き、それが母音カウントを返すようにすることです。 – Carcigenicate

+0

私が無能であることをお詫びしますが、メインにすでに定義されている場合、どのように変数をリセットするのですか? – Mauser137

+0

独自の関数にコードを記述すると、それらは関数内で定義され、関数が終了すると自動的に破棄されます。あなたは母音のコピーを 'main'に'返す 'でしょう。関数を使って返す方法を学んだことがありますか? – Carcigenicate

答えて

0

使用すると、1つのオブジェクトで私たちの数を追跡することができます文字列としてキーで。その後、各テスト/文字列ごとに1つずつ、多くのマップをListに入れることができます。次に、異なるデータセットで同じテストを実行するリストをループすることができます。

私は宿題をしており、私はコードを投稿しません。