此代码的目标是使用main方法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
str.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]);
}}}
答案 0 :(得分:3)
平均而言,我假设您的意思是平均值长度。我也假设你想要一个浮点意味着。在这种情况下,您只需要将strings
中所有长度的总和除以数组本身的长度。
您可以执行以下操作;
int total = 0;
for(String s : strings) total += s.length();
System.out.println((double)total/strings.length);
我希望这会有所帮助。
答案 1 :(得分:1)
在不分解代码的情况下,您可以在for
数组中运行counts[]
循环,将所有值相加,然后除以counts.length
以获得平均值。< / p>
请注意类型转换。你可能想要做双重除法而不是整数。
答案 2 :(得分:0)
这就是你要找的东西?
import java.util.Scanner;
public class While_Loop {
public static void main (String[] args) {
int lengthSum, wordCount;
lengthSum = wordCount = 0;
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;
wordCount++;
lengthSum += str.length();
for(int i = 1; i < counts.length; i++)
System.out.println(i + " letter words: " + counts[i]);
System.out.println("Average: " + lengthSum/wordCount);
}}}
注意:我只在您的代码中添加了内容。它的编写方式非常混乱。我会清理一些for循环和最后的括号,以便练习使代码更具可读性。
答案 3 :(得分:0)
当我理解你是正确的时,你应该添加一个变量int totalCount = 0;
在你的最后一个for循环中totalCount += i*counts[i];
。
在循环之后,您可以简单地除以大小-1(因为0不计算)
double average = totalCount/(counts.length-1);
替代方式
您获取不带空格的输入字符串长度,并将其除以空格数+ 1(等于单词数)
答案 4 :(得分:0)
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
System.out.println("Enter text: ");
String s = "This is a sample text";
System.out.println("" + s);
String[] strings = s.split(" ");
for(String str : strings) {
Integer counter = map.get(str.length())==null?0:map.get(str.length());
map.put(str.length(),counter++);
}
Integer sum=0;
Integer counter=0;
for(Integer len : map.keySet()) {
sum+=len*map.get(len);
counter+=map.get(len);
}
Double average = Double.valueOf(sum/counter);
或者你可以结合循环
答案 5 :(得分:-1)
可能对您有所帮助的建议(与具体问题无关)。
While_Loop
。Scanner input = new Scanner(System.in);
。"\\s+"
分割线条。keySet
,添加所有键的值,即* count *列表中元素的数量*。然后除以元素总数。