-1
  1. 我的 java 代码运行大约需要 10-15 分钟(输入文件是 7200+ 行长的查询列表)。如何让它在短时间内运行以获得相同的结果?
  2. 如何使我的代码仅搜索 aA 到 zZ 和 0 到 9?
  3. 如果我不执行 #2,我的输出中的某些字符会显示为“?”。我该如何解决这个问题?

    // no parameters are used in the main method
    public static void main(String[] args) {
    
    // assumes a text file named test.txt in a folder under the C:\file\test.txt
    Scanner s = null;
    BufferedWriter out = null;
    try {
        // create a scanner to read from the text file test.txt
        FileInputStream fstream = new FileInputStream("C:\\user\\query.txt");
        DataInputStream in = new DataInputStream(fstream);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        // Write to the file
        out = new BufferedWriter(new FileWriter("C:\\user\\outputquery.txt"));
    
        // keep getting the next String from the text, separated by white space
        // and print each token in a line in the output file
        //while (s.hasNext()) {
        //  String token = s.next();
        //  System.out.println(token);
        //  out.write(token + "\r\n");
        //}
        String strLine="";
        String str="";
    
         while ((strLine = br.readLine()) != null)   {
    
                str+=strLine;
                }
               String st=str.replaceAll(" ", "");
               char[]third =st.toCharArray();
              System.out.println("Character     Total");
              for(int counter =0;counter<third.length;counter++){
                  //String ch= "a";
                 char ch= third[counter];
              int count=0;
              for ( int i=0; i<third.length; i++){
                 // if (ch=="a")
                  if (ch==third[i])
              count++;
            }
            boolean flag=false;
            for(int j=counter-1;j>=0;j--){
                //if(ch=="b")
                if(ch==third[j])
            flag=true;
            }
            if(!flag){
            System.out.println(ch+"                  "+count);
            out.write(ch+"                  "+count);
            }
            }
    
    
    
        // close the output file
        out.close();
    } catch (IOException e) {
        // print any error messages
        System.out.println(e.getMessage());
    }
    // optional to close the scanner here, the close can occur at the end of the code
    finally {
        if (s != null) {
            // close the input file
            s.close();
        }
            }
    }
    
4

2 回答 2

0

对于这样的事情,我不会推荐 java,尽管完全有可能使用 GAWK 或类似的东西要容易得多。GAWK 也有类似 java 的语法,所以很容易上手。你应该检查一下。

于 2012-04-07T17:04:08.473 回答
0

SO 并不是真正提出如此广泛的how-do-I-do-this-question 的地方,但我将向您推荐以下有关Java 中的正则表达式和文本匹配的页面。此外,请查看Javadocs 以了解 regexes

如果您点击该链接,您应该得到您想要的,否则您可以在 SO 上发布更具体的问题。

于 2012-04-07T17:04:29.143 回答