文件out.txt中内容:
0出现了: 41次
1出现了: 48次
2出现了: 34次
3出现了: 48次
4出现了: 51次
5出现了: 62次
6出现了: 67次
7出现了: 68次
8出现了: 40次
9出现了: 28次请编写程序,从out.txt中读取内容,经过处理后,
显示结果为(注:次数相同的数字后加*,如本例中的1*3*):
出现次数由大到小的顺序为:78541*3*0829
0出现了: 41次
1出现了: 48次
2出现了: 34次
3出现了: 48次
4出现了: 51次
5出现了: 62次
6出现了: 67次
7出现了: 68次
8出现了: 40次
9出现了: 28次请编写程序,从out.txt中读取内容,经过处理后,
显示结果为(注:次数相同的数字后加*,如本例中的1*3*):
出现次数由大到小的顺序为:78541*3*0829
0出现了: 41次
1出现了: 48次
2出现了: 34次
3出现了: 48次
4出现了: 51次
5出现了: 62次
6出现了: 67次
7出现了: 68次
8出现了: 40次
9出现了: 28次请编写程序,从out.txt中读取内容,经过处理后,
显示结果为(注:次数相同的数字后加*,如本例中的1*3*):
出现次数由大到小的顺序为:78541*3*0829
0出现了: 41次
1出现了: 48次
2出现了: 34次
3出现了: 48次
4出现了: 51次
5出现了: 62次
6出现了: 67次
7出现了: 68次
8出现了: 40次
9出现了: 28次请编写程序,从out.txt中读取内容,经过处理后,
显示结果为(注:次数相同的数字后加*,如本例中的1*3*):
出现次数由大到小的顺序为:78541*3*0829
0出现了: 41次
1出现了: 48次
2出现了: 34次
3出现了: 48次
4出现了: 51次
5出现了: 62次
6出现了: 67次
7出现了: 68次
8出现了: 40次
9出现了: 28次请编写程序,从out.txt中读取内容,经过处理后,
显示结果为(注:次数相同的数字后加*,如本例中的1*3*):
出现次数由大到小的顺序为:78541*3*0829
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Comparator;public class Answer {
public String[] getContentFromText(String filename,String charsetName){
String[] content=null;
FileInputStream fis=null;
try {
fis=new FileInputStream(filename);
int length=fis.available();
byte[] temp=new byte[length];
fis.read(temp);
content=new String(temp,charsetName).split("、");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return content;
}
public String getArrayString(String[] content){
StringBuilder sb=new StringBuilder();
for (int i = 0; i < content.length; i++) {
sb.append(content[i]);
}
return sb.toString();
}
public int[][] getNumberCount(String arrayString){
int[][] countArray=new int[10][];
for(int i=0;i<10;i++){
countArray[i]=new int[]{i,arrayString.split(""+i).length};
}
return countArray;
}
public static void main(String[] args) {
Answer answer=new Answer();
int[][] count=answer.getNumberCount(answer.getArrayString(answer.getContentFromText("test.txt", "gbk")));
Arrays.sort(count,new Comparator<int[]>() { @Override
public int compare(int[] o1, int[] o2) {
// TODO Auto-generated method stub
return o2[1]-o1[1];
}
});
for(int i=0;i<count.length-1;i++){
System.out.print(count[i][0]);
if(i>0&&count[i][1]==count[i-1][1]){
System.out.print("*");
}
}
}
}
Answer answer=new Answer();
int[][] count=answer.getNumberCount(answer.getArrayString(answer.getContentFromText("test.txt", "gbk")));
Arrays.sort(count,new Comparator<int[]>() { @Override
public int compare(int[] o1, int[] o2) {
// TODO Auto-generated method stub
return o2[1]-o1[1];
}
});
for(int i=0;i<count.length;i++){
System.out.print(count[i][0]);
if(i>0&&count[i][1]==count[i-1][1]){
System.out.print("*");
}
}
}
045689、123579、045689
012389、256789、124567
0123489、13456789、0123489
0123479、0123479、0123479
234789、01234789、234789
01234、0123458、01234789
056789、01234568、12345689
123489、124569、124589
我以为楼主的txt还是之前的 因为名字都是out.txt。卧槽 我今天有点头晕。。
0出现了: 41次
1出现了: 48次
2出现了: 34次
3出现了: 48次
4出现了: 51次
5出现了: 62次
6出现了: 67次
7出现了: 68次
8出现了: 40次
9出现了: 28次请编写程序,从out.txt中读取内容,经过处理后,
显示结果为(注:次数相同的数字后加*,如本例中的1*3*):
出现次数由大到小的顺序为:78541*3*0829
Map<Integer, String> map = new HashMap<Integer, String>();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("out.txt")));
String buf;
while((buf=bf.readLine()) != null) {
if (!buf.matches("^d.*?\\d+.*")) continue;
String[] sa = buf.split("\\D+");
Intger key = Integer.valueOf(sa[1]);
if (map.containsKey(key)) {
map.put(key, map.get(key)+"*"+sa[0]);
} else {
map.put(key, sa[0]);
}
}
List<Integer> list = new ArrayList<Integer>(map.keySet());
Collections.sort(list);
StringBuilder result = new StringBuilder();
for (int i : list) {
buf = map.get(i);
result.append(buf);
if (buf.contains("*")) {
result.append("*");
}
}
System.out.println(result.toString());
Scanner scanner;
try {
scanner = new Scanner(new File("bin/out.txt"));
StringBuffer sb = new StringBuffer();
while(scanner.hasNext()){
sb.append(scanner.next());
}
System.out.println(sb.toString().replaceAll("出现了", "").replaceAll("次", ","));
String s = sb.toString().replaceAll("出现了", "").replaceAll("次", ",");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} 后面处理这个字符串你懂的。
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;class Bean {// 为了方便记录,创建一个Bean,这里我不使用HashMap,你可以考虑使用Map来解决
int key;
int value;
boolean flag = false;// 这个域记录value是否和另一些数据相同 public Bean(int key, int value) {
super();
this.key = key;
this.value = value;
} public int getKey() {
return key;
} public void setKey(int key) {
this.key = key;
} public int getValue() {
return value;
} public void setValue(int value) {
this.value = value;
} public boolean isFlag() {
return flag;
} public void setFlag(boolean flag) {
this.flag = flag;
} public String toString() {
if (flag)
return key + "*";// value是否跟其他数据相同,决定是否打印"*"
else
return key + "";
}
}class BeanComparator implements Comparator<Bean> {
public int compare(Bean o1, Bean o2) {
return o1.getValue() > o2.getValue() ? -1 : (o1.getValue() < o2
.getValue() ? 1 : 0);
}
}public class ResolveFile {
static int counter = 10; public static void main(String[] args) {
resolveFile("c:/out.txt");
} public static void resolveFile(String fileName) {
BufferedReader br = null;
List<Bean> beans = new LinkedList<Bean>();
try {
br = new BufferedReader(new FileReader(fileName));
String sourceString = null;
String regex = "(\\d+)\\s*出现了:\\s*(\\d+)\\s*次";
Matcher matcher = null;
Pattern pattern = Pattern.compile(regex);
while ((sourceString = br.readLine()) != null) {
matcher = pattern.matcher(sourceString);
if (matcher.find()) {// 找到
int key = Integer.parseInt(matcher.group(1));
int value = Integer.parseInt(matcher.group(2)); Bean temp = null;
Bean bean = new Bean(key, value);
for (int i = 0; i < beans.size(); i++) {// 把相同value做标记
temp = beans.get(i);
if (temp.getValue() == value) {
temp.setFlag(true); // value是否跟其他数据相同
bean.setFlag(true);
}
}
beans.add(bean);
}
}
Collections.sort(beans, new BeanComparator());
for (Bean bean : beans)
System.out.print(bean); } catch (IOException e) {
throw new RuntimeException(e);
} finally {
if (br != null)
try {
br.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
/*output:
76541*3*0829
*/
76541*3*0829
*/而不是
78541*3*0829