2015-04-15 4 views
-1

Я так смущен тем, как искать отдельные буквы (отдельные гласные) в массиве моей строки.Как получить отдельные буквы в строке

import static java.lang.System.*; 

import java.util.Arrays; 

public class Word { 
    private String word; 
    private static String vowels = "AEIOUaeiou"; //only one 

    public Word() { 
     String vow = ""; 
     vowels = vow; 
    } 

    public Word(String wrd) { 
     word=wrd; 
    } 

    public void setWord(String wrd) { 
    } 

    public int getNumVowels(String[] ray, String vowels) { 
     int count=0; 
     for(String item : ray) { 
      if() { 
       count = count + 1; 
      } 
     } 
     return count; 
    } 

    public int getLength(String[] ray) { 
     return 0; 
    } 

    public String toString(String[] ray) { 
     return ""; 
    } 
} 

Это бегун. Как заставить getNumVowels работать, ища отдельную букву с помощью ввода?

import java.util.Arrays; 
import java.util.Scanner; 
import static java.lang.System.*; 

public class WordRunner { 
    public static void main(String[] args) { 
     String alpha=""; 
     String [] ray = new String[4]; 
     ray[0] ="Polo"; 
     ray[1] ="Crazy"; 
     ray[2] ="Abracadabra"; 
     ray[3] ="Awesome"; 

     out.println(Arrays.toString(ray)); 
     out.println("Number of vowels: " + Arrays.getNumVowels(ray)); 
     out.println("Length of the word: " + Arrays.getLength(ray)); 
    } 
} 

ответ

1

Есть несколько ошибок в коде ...

Вы звоните Arrays методы, которые не существует ...

out.println("Number of vowels: "+ Arrays.getNumVowels(ray)); 
out.println("Length of the word: "+ Arrays.getLength(ray)); 

Изменить Word класс (вы вкладываете много ненужных вещей):

import static java.lang.System.*; 

import java.util.Arrays; 

public class Word 
{ 
    private static String vowels = "AEIOUaeiou"; //only one 


    public static int getNumVowels(String word) 
    { 
     int count=0; 
     for (int i=0; i < word.length(); i++) 
     { 
      // check if selected char is a vowel 
      if (vowels.contains(word.charAt(i) + "")) 
      { 
       count ++; // same as count = count + 1 
      } 
     } 
     return count; 
    } 

} 

Тогда для вызова метода, так как он является статическим:

public static void main(String[] args) 
{ 
    System.out.println("Number of vowels of Polo: "+ Word.getNumVowels("Polo")); 
    //Output: 
    //   Number of vowels of Polo: 2 

    // or execute like this: 
    String a = "Polo"; 
    int vowels = Word.getNumVowels(a); 
    System.out.printlm("Number of vowels of Polo: "+ vowels); 
    //Output: 
    //   Number of vowels of Polo: 2 
} 

UPDATE: если вы хотите, чтобы количество слов класса гласные в массиве, просто использовать уже существующий метод.

Внутри Word класса добавить перегрузку существующего метода, который принимает массив и использовать старый один:

// overload: same method name, but different arguments!!! 
public static int getNumVowels(String[] array) 
{ 
    int count = 0; 
    for (i = 0; i < array.lenght; i ++){ 
     // use existing method to save code!! 
     count += getNumVowels(array[i]); 
    } 

    return count; 
} 

И использовать его как:

String [] ray = new String[4]; 
ray[0] ="Polo"; 
ray[1] ="Crazy"; 
ray[2] ="Abracadabra"; 
ray[3] ="Awesome"; 


int vowels = Word.getNumVowels(ray); // count vowels in ALL array words... 
+0

Я использовал этот метод, однако теперь он говорит, что сложения не применимы для оператора ... –

+0

True, извините Используйте 'if (vowels.contains (word.charAt (i) +" "))', чтобы преобразовать символ в строку –

+0

Замечательно! :) Поскольку это ваш первый вопрос в StackOverflor, вы должны знать, решил ли этот или любой ответ ваш вопрос, [принять его] (http://meta.stackexchange.com/q/5234/179419), нажав галочка. Это указывает более широкому сообществу, что вы нашли решение и дали некоторую репутацию как самому, так и самому себе. ** Конечно, нет никаких обязательств для этого. ** –

0

Вы можете получить массив символов из строки и перебрать его ищет необходимый гласный (если вы хотите, чтобы подсчитать, сколько раз появляется один гласный звук, то нет никакой необходимости передавать строку, вы можете просто используйте символ).

public int getNumVowels(String[] ray, char vowel) { 
    int count=0; 
    for(String s: ray) 
    { 
     char[] array = s.toLowerCase().toCharArray(); 
     for (int i=0; i<array.length; i++) { 
      if(array[i] == vowel) { 
       count = count + 1; 
      } 
     } 


    } 
    return count; 
} 

Вам нужно s.toLowerCase() только если вы хотите, чтобы поиск будет нечувствителен к регистру (потому что, например, «а» отличается от «A»).

-1

прямолинейным способом:

String vowels = "AEIOUaeiou"; 
    int count = 0; 
    for (int i=0; i<str.length(); i++) 
    { 
     if (vowels.contains(str.charAt(i) + "")) 
     { 
      count++; 
     } 
    } 
    return count; 
+1

он не хочет, чтобы сосчитать все гласные , но только сколько раз появляется конкретная гласная – user2340612

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