-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は、実際にはこのような幅広い質問をする場所ではありませんが、Javaでの正規表現とテキストの一致に関する次のページを参照してください。また、正規表現についてはJavadocを確認してください。

そのリンクをたどると、欲しいものが手に入るはずです。そうでなければ、SOにもっと具体的な質問を投稿することができます。

于 2012-04-07T17:04:29.143 に答える