2016-11-01 3 views
0

Я работаю над программой для школы, где мне нужно отсортировать количество гласных в строке вместе с # неглазурованными. Мой учитель хочет, чтобы мы спросили пользователя, хотят ли они продолжить, поэтому мы можем предоставить несколько тестовых примеров без запуска программы более одного раза. Я успешно получил программу для цикла, но моя проблема в том, что гласные и негласные номера из предыдущего тестового примера переносятся на следующий. Я искал в Интернете решение, но до сих пор мне не повезло. Любая помощь приветствуется. (Я нуб в программировании Кстати, я до сих пор многому научиться.)Проблема с сбросом данных с помощью цикла 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

Если бы вы поставили код в его собственную функцию, они были бы определены внутри функции и автоматически уничтожены при выходе из функции. Вы бы «вернули» копию подсчета гласных на «главную». Вы узнали, как использовать возвращаемые функции? – Carcigenicate

ответ

0

Использование Map с помощью ключа в виде строки вы можете отслеживать наши подсчетов в одном объекте. Затем вы можете разместить столько карт, по одному для каждого теста/строки, в List. Затем вы можете перебирать список, предварительно формирующий те же тесты (ы) на разных наборах данных.

Будучи домашним заданием, и все, что я не собираюсь публиковать ни один код.

Смежные вопросы