我已经将一个简单的程序作为分隔符创建了一个值。现在,我的项目中有三个文件。它的kompil.java,input.txt,output.txt。
我希望input.txt作为源输入和output.txt打印出来。但是,它应该是一个计数器的每个类型值。
这是我的input.txt:
Z=((2+B)250+B-A+MN)/2-256*10
我希望output.txt中的输出像这样:
VARIABLE
Z:1
B:2
A:1
MN:1
OPERATOR
(:2
):2
+:3
=:1
-:2
/:1
*:1
NUMBER
2:2
250:1
256:1
10:1
但是,我不知道如何制作这样的输出。我曾尝试过拆分方法但是。卡住。 请给我任何想法。
这是我的kompil.java代码:
import java.io.*;
import java.util.Arrays;
public class kompil {
public static void main(String[] args){
String fileName = "src/input.txt";
String line = null;
try {
FileReader fileReader =
new FileReader(fileName);
BufferedReader bufferedReader =
new BufferedReader(fileReader);
while((line = bufferedReader.readLine()) != null) {
char[] chars=line.toCharArray();
Arrays.sort(chars);
String out = new String(chars);
PrintStream ps = new PrintStream("src/output.txt");
PrintStream orig = System.out;
System.setOut(ps);
System.out.println(out);
System.setOut(orig);
ps.close();
}
bufferedReader.close();
}
catch(FileNotFoundException ex) {
System.out.println(
"Unable to open file '" +
fileName + "'");
}
catch(IOException ex) {
System.out.println(
"Error reading file '"
+ fileName + "'");
}
}
}
继续代码的最佳方式是什么?
答案 0 :(得分:0)
您已将其拆分为行{{1}}中的字符。不要对该数组进行排序(请参阅下一行)。相反,这是您应用在课堂上学到的内容的地方。仔细看看Character类的静态函数,比如Character.isDigit(char)来解释每个字符,也许还有ArrayList对象来跟踪你识别的每种类型的令牌。