这是我第一次使用ArrayLists,我现在才知道你不能使用charAt。我不知道如何继续这项任务。该程序的目的是打印出一个数组,给出每个元音的平均值。例如,[奶酪,奶酪,奶酪]的阵列将是[0,3,0,0,0]。我不关心如何完成该计划。只是charAt问题。是否有另一种方法通常替换为ArrayLists,如果没有,有人请指导我解决方案吗?我只想发布我正在谈论的代码部分。如果有人要我发布更多内容,请告诉我。
import java.util.ArrayList;
import java.util.Scanner;
import java.util.*;
public class ArrayListVowels {
public static void main (String [] args) {
ArrayList<String> vowels = new ArrayList<String>();
vowels.add("chocolate");
vowels.add("pudding");
vowels.add("elephants");
System.out.println(vowels);
System.out.println("Avg number of vowel characters: " + averageVowels(vowels));
}
public static int[] averageVowels(ArrayList<String> vowels) {
int [] vowelInt = new int [5];
for (int i = 0; i<vowels.size(); i++) {
char letter = vowels.charAt(i);
if(letter=='a') {
vowelInt[0]++;
} else if (letter == 'e') {
vowelInt[1]++;
} else if (letter == 'i') {
vowelInt[2]++;
} else if (letter == 'o') {
vowelInt[3]++;
} else if (letter == 'u') {
vowelInt[4]++;
}
}
return vowelInt;
}
所以我明白vowels.get(0)会得到巧克力,但如果我想得到'o',我将不得不在循环中做一个循环。我以前在那条赛道上思考,但是当你没有真正定义弦乐时,你怎么能这样做?你只是在“添加”它们。我认为如果它像String x =“chocolate”那样会有所不同,因为那样你就可以在那里做类似charAt的事情。这就是我想我很困惑的原因。这就是我在循环中的工作方式,但我真的不确定自己是否走在正确的轨道上。
for(int i = 0; i<vowels.size(); i++) {
for(int j = 0; j<[0].length; j++) { //I totally know that's wrong
char letter = charAt(i);
这是你在说什么吗?
答案 0 :(得分:2)
int [] vowelInt = new int [5];
for (int i = 0; i<vowels.size(); i++) {
String word =(String) vowels.get(i);//try like this
char letter=word.charAt(0); //return method to a dynamic array.
if(letter=='a') {
vowelInt[0]++;
} else if (letter == 'e') {
vowelInt[1]++;
} else if (letter == 'i') {
vowelInt[2]++;
} else if (letter == 'o') {
vowelInt[3]++;
} else if (letter == 'u') {
vowelInt[4]++;
}
答案 1 :(得分:1)
您可以使用List
检索get(i)
的第i个元素。
在这种情况下,您需要进一步更新。如果vowels
为["ham", "cheese", "bread"]
,则get(0)
将返回String
“ham”,vowels
的第0个元素。如果你想查看“ham”中的每个字母,那么你需要做更多的事情,比如在第一个和charAt
内使用另一个循环来查看字符串中的每个字母。