需要帮助找出Java中的一些嵌套迭代吗

需要帮助找出Java中的一些嵌套迭代吗,java,nested,iteration,Java,Nested,Iteration,我对编程相当陌生,不久前刚开始做一些CS,目前我的任务是编写一个程序,打印字母表中的每个字母以及该字母在短语中出现的次数。它需要包括: -循环遍历字母表(外循环) -循环遍历短语的所有字母(内部循环) -计数器变量,用于计算字母在短语中的次数 -打印语句以显示频率 我在这方面有点落后,很难找到时间来完成这项任务,只是需要一些指导,告诉我如何简单地完成这项任务,而不需要像数组之类复杂的东西 正如我所说,我没有太多时间来做这方面的工作,但以下是我认为应该是什么样的总体布局/我的计划: public

我对编程相当陌生,不久前刚开始做一些CS,目前我的任务是编写一个程序,打印字母表中的每个字母以及该字母在短语中出现的次数。它需要包括:

-循环遍历字母表(外循环) -循环遍历短语的所有字母(内部循环) -计数器变量,用于计算字母在短语中的次数 -打印语句以显示频率

我在这方面有点落后,很难找到时间来完成这项任务,只是需要一些指导,告诉我如何简单地完成这项任务,而不需要像数组之类复杂的东西

正如我所说,我没有太多时间来做这方面的工作,但以下是我认为应该是什么样的总体布局/我的计划:

public class LetterFrequencies
{
    public static void main(String[] args)
    {
        int counter = 0;
        String letters = "abcdefghijklmnopqrstuvwxyz"; 
        String phrase = "This is a phrase";

        System.out.println("The following shows the letter frequencies for the phrase");

    //for (int i = _; i < _; i++) ??
    {
      //Print out statement like :System.out.println(letters.substing());
    }
      //possible while loop or for loop? 
    }
}
公共类字母频率
{
公共静态void main(字符串[]args)
{
int计数器=0;
字符串字母=“abcdefghijklmnopqrstuvxyz”;
String phrase=“这是一个短语”;
System.out.println(“下面显示了短语的字母频率”);
//对于(inti=; i<; i++)的情况??
{
//打印输出语句,如:System.out.println(letters.substang());
}
//可能是while循环还是for循环?
}
}

请随时纠正我,不管怎样,因为我需要所有的知识,我可以在不久的将来提高,谢谢

在不使用数组或列表的情况下尝试此解决方案,也许它会帮助您:

public static void main(String[] args) {
        int counter = 0;
        String letters = "abcdefghijklmnopqrstuvwxyz"; 
        String phrase = "This is a phrase".toLowerCase();
        for (int i = 0; i < letters.length(); i++) {
            int count = 0;
            char a = letters.charAt(i);
            for (int j = 0; j < phrase.length(); j++) {
                if (a == phrase.charAt(j)) {
                    count++;
                }
            }
            System.out.println("The letter " + letters.charAt(i) + " " + count);
        }
        
    }
这是一种方式:

    String lettersString = "abcdefghijqlmnñopqrstuvwxyz";
    char[] letters = lettersString.toCharArray();
    int[] counts = new int[letters.length];
    Arrays.fill(counts, 0);
    String textBoxValue = "This is the message";
    for (int i = 0; i < textBoxValue.length(); i++) {
        char currentLetter = textBoxValue.charAt(i);
        for (int j = 0; j < letters.length; j++) {
            char letter = letters[j];
            if (currentLetter == letter ||
            currentLetter == Character.toUpperCase(letter)){
                counts[j]++;
            }
        }
    }
    for (int i = 0; i < letters.length; i++) {
        //Print it your own way
        String message = letters[i] + " : " + counts[i];
        Log.d(TAG, message);
        System.out.println(message);
    }
字符串字母String=“abcdefghijqllmnñopqrstuvxyz”;
char[]字母=字母字符串.toCharArray();
int[]计数=新的int[letters.length];
数组。填充(计数,0);
String textBoxValue=“这是消息”;
对于(int i=0;i
也许这会有帮助,只要试着做一个频率图就可以了

    public static Map<Character, Integer> frequencies(String yourPrhase){
        Map<Character, Integer> frequency = new HashMap<>();
        for(final char c : str.toCharArray()){
            frequency.compute(c, (k, v) -> v == null ? 1: v++);
        }
        return frequency;
}
公共静态映射频率(字符串相位){
映射频率=新HashMap();
for(最终字符c:str.toCharArray()){
计算(c,(k,v)->v==null?1:v++);
}
返回频率;
}
然后你就可以用频率图做你需要的,也许可以打印出来

也可以试试这个功能多一点

   public static Map<String, Long> frequencies2(String yourPrhase){
    return  str.chars()
        .mapToObj(c -> String.valueOf((char) c))
        .collect(Collectors.groupingBy(String::valueOf, Collectors.counting()));
}
公共静态映射频率2(字符串yourphase){
返回字符串chars()
.mapToObj(c->String.valueOf((char)c))
.collect(Collectors.groupingBy(String::valueOf,Collectors.counting());
}

很抱歉,但是你所说的字母频率是什么意思,例如,短语“这是一个短语”的输出是什么。输出应该是这样的:a2b0c0d0e1f0g0h2i2j0等等……实际上,你需要花点时间来做这件事,因为除非你自己去完成,否则所有的帮助都是无用的。谢谢你的反馈这帮了大忙thanks@NickMoore不客气
   public static Map<String, Long> frequencies2(String yourPrhase){
    return  str.chars()
        .mapToObj(c -> String.valueOf((char) c))
        .collect(Collectors.groupingBy(String::valueOf, Collectors.counting()));
}