我在创建程序时遇到一些麻烦,该程序使用数组来计算用户输入的名称中的元音。用户应该能够输入最多1000个名称或说“完成”以结束程序。一旦用户获得1000个名字或说完,就应该显示每个名称中元音的总量。 以下是我到目前为止的情况:
import java.util.Scanner;
import java.lang.String;
import java.lang.Math;
public class Countvowels
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
final int LOW ='A';
final int HIGH = 'Z';
int[] letterCounts = new int[HIGH-LOW+1];
String[] word = new String[1000];
char[] wordLetter;
int offset;
System.out.println("Enter a name: ");
for(int letter = 0; letter < wordLetter.length; letter++){
word[letter] = input.nextLine();
wordLetter = word.toCharArray();
}
}
}
非常感谢帮助!
答案 0 :(得分:4)
别介意所有代码。你只需要一行:
String[] word = new String[1000]; // given this
int vowels = Arrays.toString(word).replaceAll("(?i)[^aeiou]", "").length();
这首先将数组转换为字符串(基本上是csv),然后替换所有非元音(fyi (?i)
是不区分大小写的标志)什么都没有(即删除它们),然后只留下元音只需要考虑长度。
答案 1 :(得分:0)
如果你需要所有元音的总数@Bohemian有一个很好的答案。如果你需要它们分开,可能更容易做到以下几点:
只需创建一个包含所有用户输入的大字符串。
然后例如当你最终得到:
String userInput = 'JohnMaryLisaPeter';
for(int x = 0; x <= userInput.length() - 1; x++) {
if(userInput.charAt(x) == 97)
vowelA++;
else if(userInput.charAt(x) == 101)
vowelE++;
else if(userInput.charAt(x) == 105)
vowelI++;
else if(userInput.charAt(x) == 111)
vowelO++;
else if(userInput.charAt(x) == 117)
vowelU++;
}
System.out.println("There were " + vowelA + " A's in all your names.");
System.out.println("There were " + vowelE + " E's in all your names.");
System.out.println("There were " + vowelI + " I's in all your names.");
System.out.println("There were " + vowelO + " O's in all your names.");
System.out.println("There were " + vowelU + " U's in all your names.");
答案 2 :(得分:0)
我看到三个错误:
你有字符数组
char[] wordLetter;
元音将,但你将它用作for循环终止。数组中还没有任何内容 - 根本没有数组,只是内存中的一个标记,将创建 - 所以你要将字母与虚无比较!
for(int letter = 0; letter < wordLetter.length; letter++){
应该是
for(int letter = 0; letter < [some_number_here]; letter++){
在for循环中,您试图将单词的整个数组更改为字符数组,这没有任何意义。命名单词数组word
让您感到困惑。试试aWords
或其他什么。
wordLetter = word.toCharArray();
修正:
wordLetter = word[letter].toCharArray();
letter
是变量名称的另一个糟糕选择。试试iIndex
。
我希望这有帮助!