Hello EveryOne我想根据频率对文件的文本进行排序.我在运行时出现错误,内存错误.请尽快给出回复.
import java.io.*;
import java.util.*;
import java.util.Collections;
class SortedInAlphaOrder
{
public static void main(String a[]) throws IOException{
Scanner input = new Scanner(System.in);
System.out.println("Enter the filename with path : " );
//String filename = input.next();
File f = new File("Ashish.txt");
BufferedReader br = new BufferedReader(new FileReader(f));
StringBuffer buffer = new StringBuffer();
String str =br.readLine();
while((str!= null)){
buffer.append(str);
buffer.append(" ");
}
ArrayList<String> list = new ArrayList<String>();
StringTokenizer st = new StringTokenizer(buffer.toString().toLowerCase());
while(st.hasMoreTokens()){
String s = st.nextToken();
list.add(s);
}
HashSet<String> set = new HashSet<String>(list);
List<String> arrayList = new ArrayList<String>(set);
Collections.sort(arrayList);
for(Object ob : arrayList){
System.out.println(ob.toString());
}
} }
Run Code Online (Sandbox Code Playgroud)
获取错误OutofMemoryHeap Error.Help me out.
小智 5
我想我看到了你的问题.您分配str给br.readLine()一个,但您的while循环仅在停止时停止str == null.我假设第一个br.readLine()返回非null String,你继续检查它是否null在你的while循环中.结果,你的wile循环永远不会停止,你最终会得到一个OutOfMemory错误.相反,您应该像这样更改您的代码(未经测试).
// ...other code
String str;
while((str = br.readLine()) != null){
buffer.append(str);
buffer.append(" ");
}
// ...other code
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |