【发布时间】:2013-11-23 22:52:57
【问题描述】:
一旦一个值被存储为一个字符串,你如何循环字符串并将每个值分配给一个字符数组?还必须计算数组中每个元音的出现次数。
这是我当前的代码:
public class Part1_5 {
/**
* Method that gets user name and stores it as a string. Each value then
* assign to a char array. no of vowels are counted and no of each printed
*/
public static void main(String[] args) {
// Setting up scanner
Scanner scanner = new Scanner(System.in);
// declaring string for name
String userName = null;
// declaring ints to hold total no of each vowel
int totalOfA = 0;
int totalOfE = 0;
int totalofI = 0;
int totalofO = 0;
int totalofU = 0;
// Get user input for name
System.out.println("Please enter your Name...");
userName = scanner.nextLine();
for (int loop = 0; loop < userName.length(); loop++) {
// declaring char array
char[] letter = userName.toCharArray();
if (userName.charAt(0) == 'a') {
totalOfA++;
}
}
System.out.println(totalOfA);
}
}
【问题讨论】:
-
字符串基本上是一个带有一些额外细节的字符数组。但是,是的......它基本上已经是一个 char 数组了。
-
感谢您的回复!问题的最初部分是:“循环遍历字符串并将每个值分配给一个 char 数组”。我想知道如何在我的代码中执行此操作,还是已经完成了?
-
使用你的编码方式(虽然 Nick G 的方式肯定更好,但对你来说可能有点太高级了),删除
char[] letter = userName.toCharArray();并将if (userName.charAt(0) == 'a') {替换为if (userName.charAt(loop) == 'a') {正如 pobrelkey 所建议的那样。现在您必须对剩余的元音执行相同的操作(if 条件并以loop作为索引进行计数)。请注意,此当前实现仅捕获a,而不是A。你可以通过写if (userName.charAt(loop) == 'a' || userName.charAt(loop) == 'A') {来解决这个问题。同样,这种方式并不漂亮。 :) -
在现实世界中,您不需要将
username中的值复制到数组中来计算元音,而只需使用username.charAt()来单独获取字符值。即使出于某种原因您确实想从String创建一个char数组,您也只需调用yourString.toCharArray()。另一方面,如果你的教授让你编写不必要的代码只是为了告诉你如何实例化一个数组并处理它的元素,那是另一回事...... -
我现在得到了我的解决方案,非常感谢大家!如果你不介意我问,有没有关于堆栈溢出的部分,我可以为像我这样的新手写我熟悉的内容的答案?我想为我知道的问题提供答案,而不是总是接受它们!大声笑