用Java输出频率前k的数_JAVA编程单词频率排序输出 望高手指教

在一个文件中(英文加标点),统计每个单词出现的频率,并排序输出.(用JAVA编写).我编写了个,有3个错误,望高手指教.代码如下:importjava.awt.*;importjava.io.*;publicclasswordexam{publ...

在一个文件中(英文加标点),统计每个单词出现的频率,并排序输出.(用JAVA编写).

我编写了个,有3个错误,望高手指教.

代码如下:

import java.awt.*;

import java.io.*;

public class wordexam

{

public swap(int x,int y) //用于整型数据的交换

{ int temp;

temp=x;

x=y;

y=temp;

}

public swap(string x,string y) //用于字符串类型的交换

{ string temp;

temp=x;

x=y;

y=temp;

}

public class word

{ //用于存储单词和它出现的频率

string word;

int cout=0;

}

public static void main()

{

int i,r,s,w,a;

char c;

string ptr=0,str, url,file;

word wor[];

System.out.println("请输入你要打开的文件的路径!\n");

//scanf("%s",&url);//请你直接把路径直接副给URL

System.out.println("请输入你要打开的文件名!\n");

//scanf("%s",&file);//请你直接把文件名直接副给FILE

try{

File file1=new File("url");

FileReader fr=new FileReader(file1);

BufferedReader inFile=new BufferedReader(fr);

if((str=infile.readline())==null) //打开文件

{

System.out.println("你输入的文件无法打开\n");

fr.close();

}

}

catch(IOException e)

{

System.out.println(e);

}

//把文件中的内容存入数组

for(i=0;(c=str[i])!="\0";i++)

if('A'<=c<='z') //判断是否为字母

ptr=strcat(ptr,c); //找出单词

else if(r==1)

{ wor[1].word=ptr;

wor[1].word+=1;

}

else if(1

{ for(g=1;g<=r;g++) //判断单词是否相同

{if(strcmp(wor[g].word,ptr)==0)

{

wor[g].cout+=1;

ptr=0;

}

else

{ wor[r+1].word=ptr; //单词不相同的处理

wor[r+1].cout+=1;

}

}

}

for(s=1;s<=r;s++) //对单词出现的频率进行的排序

for(w=2;w<=r;w++)

do {

swap(wor[s].cout,wor[w].cout);

swap(wor[s].word,wor[w].word);

}

while(wor[s].cout>wor[w].cout);//升序进行排序

for(a=1;a<=r;a++) //结果的输出

{

System.out.println("单词的升序排列为");

System.out.println(wor[a].word);

System.out.println("对应单词出现的频率为");

System.out.println(wor[a].cout);

}

}

}

出现的错误如下:

wordexam.java:5: '{' expected

public class swap(int x,int y) //用于整型数据的交换

^

wordexam.java:11: '{' expected

public class swap(string x,string y) //用于字符串类型的交换

^

wordexam.java:84: '}' expected

^

3 errors

望高手指教.在此小弟先谢谢了.

上面的大哥 你能给编个出来吗? 我看看你是怎么写的

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值