2015-03-24 2 views
2

Я хочу спросить, что случилось с моим кодом. Я пытаюсь создать программу, которая проверяет количество гласных в заданной строке и выводит их в массив. Проблема в том, что в начале массива всегда есть дополнительный элемент. Почему это происходит. В начале массива всегда есть 0.Дополнительный элемент в начале массива

Образец выходного сигнала с вводом 18 строк [0, 8, 13, 5, 8, 12, 7, 5, 3, 9, 8, 8, 16, 11, 15, 10, 9, 9, 9] я бы указать, что # строк является 19, потому что добавить дополнительный элемент в передней

import java.util.Arrays; 
import java.util.Scanner; 

public class VowelCount { 
    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     int[] nums = putArr(in); 

     System.out.println(Arrays.toString(nums)); 
    } 




    public static int[] putArr(Scanner in){ 
     System.out.println("How many String"); 
     int a = in.nextInt(); 
     int[] make = new int[a]; 

     for (int i = 0; i < a; i++) { 
      make[i] = vowelCount(in); 
     } 

     return make; 
    } 


    public static int vowelCount(Scanner in){ 
     int count = 0; 
     String input = in.nextLine(); 
     for (int i = 0; i < input.length(); i++) { 
      if (input.charAt(i) == 'a' || input.charAt(i) == 'e' || input.charAt(i)== 'i' || input.charAt(i) == 'u' 
        || input.charAt(i)== 'o' || input.charAt(i) == 'y'){ 
       count++; 
      } 
     } 
     return count; 
    } 
} 

ответ

2

никогда не используйте nextLine() после nextInt(). После удара Введите ключ, который он вызывает как пустую строку. Изменение

int a = in.nextInt(); 

Для

int a = Integer.parseInt(in.nextLine()); 
+0

nextLine() был так, что будет продолжать чтение строки через пробел – Onedaynerd

+0

Это на самом деле работает спасибо за захватывающим человек! – Onedaynerd