在处理 ArrayLists 时,我用啥代替 charAt?

Posted

技术标签:

【中文标题】在处理 ArrayLists 时,我用啥代替 charAt?【英文标题】:What do I substitute for charAt when dealing with ArrayLists?在处理 ArrayLists 时,我用什么代替 charAt? 【发布时间】:2014-12-08 18:39:44 【问题描述】:

这是我第一次使用 ArrayLists,我现在才知道你不能使用 charAt。我不知道如何进行这项任务。该程序的目的是打印出一个数组,该数组给出每个元音的平均值。例如,[cheese, cheese, cheese] 的数组将是 [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);

你说的是这种情况吗?

【问题讨论】:

非常感谢你们两位的帮助。我现在更好地理解了这个主题。 :) 【参考方案1】:
  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]++;
    

【讨论】:

这只会查看每个单词的第一个字母。【参考方案2】:

您可以使用get(i) 检索List 的第i 个元素。

在这种情况下,您需要进一步更新。如果vowels["ham", "cheese", "bread"],那么get(0) 将返回String "ham",这是vowels 的第0 个元素。如果你想查看 "ham" 中的每个字母,那么你需要做一些进一步的事情,比如在第一个循环中使用另一个循环,并使用 charAt 来查看字符串中的每个字母。

【讨论】:

感谢您的回复。我试过了,并收到一个编译器错误说明:ArrayListVowels.java:39: incompatible types found : java.lang.String required: char char letter = vowels.get(i); ^ 1 个错误 对,因为您的 List 属于 Strings 而不是 chars。 vowels 究竟包含什么? 更新了答案,提供更多信息。是的,如果它是一个字符数组列表,它会起作用(或者至少你会得到一个不同的错误),但这不是你所拥有的。

以上是关于在处理 ArrayLists 时,我用啥代替 charAt?的主要内容,如果未能解决你的问题,请参考以下文章

mysql百万数据查询 用啥代替in,该如何处理

用啥来代替 JavaScript 中的类? [复制]

integer在idea中,可以用啥代替

ISLASTPERIOD啥意思?在通达信可以用啥代替

没有common模块可以用啥代替

用啥代替 socket.removeAllListeners();在客户端