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