java停留在平均字长上
这段代码的目标是使用主方法java创建一个程序来分析用户输入的文本片段
他们将文本输入扫描仪,然后由程序进行分析。分析是为了产生词频,例如“这是一个测试”产生以下结果:
This is a test
1 letter words: 1
2 letter words: 1
3 letter words: 0
4 letter words: 2
5 letter words: 0
我一直坚持的一点是产生一个平均值,我的直觉告诉我要分开
counts.length
bystr.length
但是我并不擅长java,我已经尝试实现了这一点,但是我得到的都是错误。我不希望有人直接把代码交给我,但是如果有人能给我一个我应该做什么的提示或者给我指出正确的方向,我将不胜感激
代码:
import java.util.Scanner;
public class Text_AD {
public static void main (String[] args) {
while(true){
Scanner input = new Scanner(System.in);
System.out.println("Enter text: ");
String s;
s = input.nextLine();
System.out.println("" + s);
String[] strings = s.split(" ");
int[] counts = new int[6];
for(String str : strings)
if(str.length() < counts.length) counts[str.length()] += 1;
for(int i = 1; i < counts.length; i++)
System.out.println(i + " letter words: " + counts[i]);
}}}
# 1 楼答案
这就是你要找的吗
注意:我只在代码中添加了一些东西。它的书写方式相当混乱。我会在最后清理一些for循环和括号,以便练习使代码更具可读性
# 2 楼答案
当我理解你是正确的,你应该有一个变量
int totalCount = 0;
,在这里你可以添加totalCount += i*counts[i];
在最后一个for循环中循环之后,您可以简单地除以大小-1(因为0不计算)
double average = totalCount/(counts.length-1);
替代方法
取不带空格的inputstring长度,并将其除以空格数+1(等于字数)
# 3 楼答案
在不太分解代码的情况下,可以通过
counts[]
数组运行for
循环,将所有值相加,然后除以counts.length
得到平均值但是要注意类型转换。您可能希望执行双除法而不是整数
# 4 楼答案
或者,您可以组合循环
# 5 楼答案
一些可能对你有帮助的建议(与具体问题无关)
While_Loop
李>Scanner input = new Scanner(System.in);
李>"\\s+"
拆分行李>keySet
,添加所有键的值,即*count*列表中的元素数*。然后除以元素总数李># 6 楼答案
平均而言,我假设您指的是平均长度。我还假设您想要得到一个浮点平均值。在这种情况下,只需将
strings
中所有长度的总和除以数组本身的长度即可您可以执行以下操作:
我希望这有帮助