我必须在java中编写一个以String数组作为参数的方法。参数数组的每个元素都包含一个单词。该方法必须返回一个字符串数组,该数组只包含以元音A,E,I,O或U开头的参数数组中的单词。
这是我到目前为止所做的:
import java.util.Scanner;
import java.util.Arrays;
public class VowelMethod {
public static String[] beginsWithVowel (String [] args ) {
String vowel [] = new String[10];
{
}
int count=0;
for(int i=0; i< count; i++) {
if ( vowel.startsWith ("a") || vowel.startsWith ("e") || vowel.startsWith ("i") || vowel.startsWith ("o") || s.startsWith ("u") );
return vowel;
//My error with this is that the startsWith method is only defined for String type, and not the String[] type.
答案 0 :(得分:1)
以下是一些提示:
由于您要检查数组的每个元素,因此需要逐个访问每个元素。你在循环中这样做。循环数是元素的数量。对于每次迭代,检查当前元素是否以元音开头。如果是,请将其添加到单独的数组中,您将在函数末尾返回该数组。要访问数组的元素,请使用括号和索引。例如,args[0]
指的是数组args
的第一个元素。您使用相同的语法将值插入数组:
vowel[i] = args[i]
会将索引i
中的元素插入到索引i
的元音中。
您希望循环args
并将匹配项插入vowel
。
您可以使用动态数组,例如ArrayList,它会自动增大,以存储匹配的单词(而不是vowel
)。这当然不是必要的。
请记住循环i
次,其中i
是数组的大小。
您可以使用集合而不是大型if语句,但这也不是必需的。
答案 1 :(得分:0)
示例代码,使用ArrayList
(如Keyser所述):
public static final String vowelsRegex = "^[aeiou].*";
public static String[] beginsWithVowel(String[] args) {
List<String> vowelled = new ArrayList<String>();
for (String s : args)
if (s.toLowerCase().matches(vowelsRegex)) vowelled.add(s);
return vowelled.toArray(new String[vowelled.size()]);
}
我想指出的是,在这些情况下,使用正则表达式而不是多个逻辑运算几乎总是更好的主意。希望这会有所帮助。