2014-10-06 3 views
-1

Так что мне было присвоено это задание в классе, чтобы сделать приложение для подсчета голосов. Я понятия не имею, что не так с моим кодом, но, пожалуйста, взгляните.Что случилось с моим заявлением о подсчете голосов?

package com.practice; 
    import java.util.*; 

    public class CountVowels { 
     public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 

    int counter = 0; 
    int vowels = 0; 

    System.out.print("Enter text: "); 
    String text = input.nextLine(); 

    int last = text.length() - 1; 

    while (last > 0) { 

     char temp = text.charAt(counter); 

     if (temp == 'a' || temp == 'e' || temp == 'i' || temp == 'o' || temp == 'u') { 

      vowels++; 

     } 
     counter++; 
     last++; 

    } 

    System.out.println("The number of vowels are: " + vowels); 

} 

}

+1

Что это ваша проблема? –

+3

Смотрите, как это работает, так это то, что вы говорите нам, что не так. Затем вы сообщаете нам все, что вы сделали, чтобы отладить проблему. Затем мы расскажем вам, в чем проблема. –

+0

Я думаю, что программа выглядит как шанс получить StringIndexOutofBound Exception, так? @kevin – santhosh

ответ

2

Ваша программа имеет пейзажный цикл и, следовательно, вызывает IndexOfBoundException. Если U хочет цикл цикла с конца U, необходимо уменьшить вашу переменную last. Напишите --last; вместо last++ и измените условие цикла на while (last >= 0). Для цикла от начала до конца вашей строки измените int last = text.length() - 1; на int last = 0; и ваше состояние цикла на while (last < text.length()). Вы можете выбрать множество способов решения этой проблемы, но главное, что вы поняли суть.

0

Вы должны сделать вашу ошибку правильно следующим образом

Scanner input = new Scanner(System.in); 
    int vowels = 0; 
    System.out.print("Enter text: "); 
    String text = input.nextLine(); 
    System.out.println(text); 
    int last = text.length() - 1; 
    while (last >= 0) { 
     char temp = text.charAt(last); 
     if (temp == 'a' || temp == 'e' || temp == 'i' || temp == 'o' || temp == 'u') { 
      vowels++; 
     } 
     last--; 
     // in your case this one ++ cause StringIndexOutOfBoundsException 
    } 
    System.out.println("The number of vowels are: " + vowels); 
-1
public static void main(String[] args){ 

       Scanner input = new Scanner(System.in); 


       int vowels = 0; 

       System.out.print("Enter text: "); 
       String text = input.nextLine(); 

       int last = text.length() - 1; 

       for(int i=0;i<text.length();i++) 
       { 
        char temp = text.charAt(i); 

        if (temp == 'a' || temp == 'e' || temp == 'i' || temp == 'o' || temp == 'u') { 

         vowels++; 

        } 
       } 


       System.out.println("The number of vowels are: " + vowels); 


      } 

Выход есть:

Введите текст: Сантош

Количество гласных: 2

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