文件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

解决方案 »

  1.   

    扫描一遍把次数存到一个Map里,然后排序
      

  2.   

    文件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
      

  3.   

    文件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
      

  4.   

    文件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
      

  5.   


    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("*");
    }
    }
    }
    }
      

  6.   

    测试数据忘记改过来了 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;i++){
    System.out.print(count[i][0]);
    if(i>0&&count[i][1]==count[i-1][1]){
    System.out.print("*");
    }
    }
    }
      

  7.   

    test.txt内容是 :
    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。卧槽  我今天有点头晕。。
      

  8.   

    文件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
      

  9.   

    for example
    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());
      

  10.   


     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();
    } 后面处理这个字符串你懂的。
      

  11.   

    import java.io.*;
    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
    */
      

  12.   

    答案是:/*output:
    76541*3*0829
    */而不是
    78541*3*0829
      

  13.   

    这个问题不算难,都有人给出程序了.思路是看out.txt大小,最好一次全读入内存,然后扫描出统计结果,最后输出.