这个程序是要实现单词次数的统计,然后输出次数,可是我的程序在输出时总是输出了重复的单词,麻烦有人看下怎么改
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;
public class lab5 {
public static void main(String[] args) throws IOException {
int m =0;
System.out.println("请输入一行文本:");
BufferedReader bf = new BufferedReader(new InputStreamReader(
System.in));
String str = bf.readLine();
String[] result = str.split("\\W+");
StringTokenizer tokens=new StringTokenizer(str);
int n = tokens.countTokens();
String[] str1 = new String[n];
String[] a ;
int flag;
int count[]=new int[str1.length];
for(int i=0;i<str1.length;i++)
{
count[i]=0;
}
for(int i=0;i<result.length;i++)
{
System.out.println(result[i]);
}
a=result.clone();
for(int j=0;j<result.length;j++)
{
flag=1;
for(int k=0;k<a.length;k++)
{
if(a[k].equalsIgnoreCase(result[j])&&flag==1)
{
flag=0;
str1[m]=a[k];
m++;
}
}
}
for(int i =0;i<str1.length;i++)
{
for(int j=0;j<a.length;j++)
{
if(a[j].equalsIgnoreCase(str1[i]))
count[i]++;
}
}
System.out.println("words Occurrences");
System.out.println("-------------------");
for(int i=0;i<str1.length;i++)
{
System.out.println(str1[i]+" "+count[i]);
}
System.out.println("-------------------");
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;
public class lab5 {
public static void main(String[] args) throws IOException {
int m =0;
System.out.println("请输入一行文本:");
BufferedReader bf = new BufferedReader(new InputStreamReader(
System.in));
String str = bf.readLine();
String[] result = str.split("\\W+");
StringTokenizer tokens=new StringTokenizer(str);
int n = tokens.countTokens();
String[] str1 = new String[n];
String[] a ;
int flag;
int count[]=new int[str1.length];
for(int i=0;i<str1.length;i++)
{
count[i]=0;
}
for(int i=0;i<result.length;i++)
{
System.out.println(result[i]);
}
a=result.clone();
for(int j=0;j<result.length;j++)
{
flag=1;
for(int k=0;k<a.length;k++)
{
if(a[k].equalsIgnoreCase(result[j])&&flag==1)
{
flag=0;
str1[m]=a[k];
m++;
}
}
}
for(int i =0;i<str1.length;i++)
{
for(int j=0;j<a.length;j++)
{
if(a[j].equalsIgnoreCase(str1[i]))
count[i]++;
}
}
System.out.println("words Occurrences");
System.out.println("-------------------");
for(int i=0;i<str1.length;i++)
{
System.out.println(str1[i]+" "+count[i]);
}
System.out.println("-------------------");
}
}
{
flag=1; for(int k=0;k <a.length;k++)
{
if(a[k].equalsIgnoreCase(result[j])&&flag==1)
{
flag=0;
str1[m]=a[k];
m++;
} }
String[] input = new BufferedReader(new InputStreamReader(System.in)).readLine().split("\\W+");
Map<String, Integer> contain = new HashMap<String, Integer>();
for (String ts : input){
contain.put(ts, contain.get(ts) == null ? 1 : contain.get(ts) + 1);
} for (String s : contain.keySet()){
System.out.println(s + " : " + contain.get(s));
}}
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;public class Cal { public static void main(String[] args) throws IOException {
int m =0;
System.out.println("请输入一行文本:");
BufferedReader bf = new BufferedReader(new InputStreamReader( System.in));
String str = bf.readLine();
String[] result = str.split("\\W+");
StringTokenizer tokens=new StringTokenizer(str);
int n = tokens.countTokens();
String[] str1 = new String[n];
String[] a = new String[result.length];
int flag;
int count[]=new int[str1.length];
for(int i=0;i <str1.length;i++){
count[i]=0;
}
for(int i=0;i <result.length;i++){
System.out.println(result[i]);
}
// a=result.clone();
for(int i=0;i<result.length;i++){
a[i] = result[i];
}
for(int j=0;j <result.length;j++){
flag=1;
for(int k=0;k <a.length;k++){
if(a[k].equalsIgnoreCase(result[j])&&flag==1){
flag=0;
str1[m]=a[k];
m++;
}
}
}
for(int i =0;i <str1.length;i++){
for(int j=0;j <a.length;j++){
if(a[j].equalsIgnoreCase(str1[i]))
count[i]++;
}
}
System.out.println("words Occurrences");
System.out.println("-------------------");
for(int i=0;i <str1.length;i++){
System.out.println(str1[i]+" "+count[i]);
}
System.out.println("-------------------");
}
}
怎样好像可以
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;public class Cal { public static void main(String[] args) throws IOException {
System.out.println("请输入一行文本:");
BufferedReader bf = new BufferedReader(new InputStreamReader( System.in));
String str = bf.readLine();
String[] result = str.split("\\W+");
StringTokenizer tokens=new StringTokenizer(str);
int n = tokens.countTokens();
String[] str1 = new String[n];
String[] a = new String[result.length];
int count[]=new int[str1.length];
for(int i=0;i <str1.length;i++){
count[i]=0;
}
for(int i=0;i <result.length;i++){
} for(int i=0;i<result.length;i++){
a[i] = result[i];
} for(int i =0;i <result.length;i++){
for(int j=0;j <a.length;j++){
if(a[j].equalsIgnoreCase(result[i]))
count[i]++;
}
}
System.out.println("words Occurrences");
System.out.println("-------------------");
for(int i=0;i <result.length;i++){
System.out.println(result[i]+" "+count[i]);
}
System.out.println("-------------------");
}
}
修改过的,试试