- 我的 java 代码运行大约需要 10-15 分钟(输入文件是 7200+ 行长的查询列表)。如何让它在短时间内运行以获得相同的结果?
- 如何使我的代码仅搜索 aA 到 zZ 和 0 到 9?
如果我不执行 #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(); } } }
问问题
101 次
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 回答