-3

文本文件

[第 1 行] a=5

[第 2 行] b=2

[第 3 行] c=3

[第 4 行] a+b*c

我只想读取和输出第 4 行。如何?

而且,我想读取这些 a=5, b=2, c=3 并将其传递给一个整数值(变量)

public static void main(String[] args) throws IOException {
    try {
        File file = new File("D:\\TextFile.txt");
        FileReader fileReader = new FileReader(file);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        StringBuffer stringBuffer = new StringBuffer();
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            stringBuffer.append(line);
        }
        fileReader.close();

        String input = stringBuffer.toString();
        String output;
        InToPost theTrans = new InToPost(input);
        output = theTrans.doTrans(); 
        System.out.println("Postfix is: " + output + '\n');

    } catch (IOException e) {
        e.printStackTrace();
    }
}
4

3 回答 3

0

一个非常简单的方法:

public static void main(String[] args) 
throws IOException {
try {               File file = new File("D:\\TextFile.txt");
            FileReader fileReader = new FileReader(file);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            StringBuffer stringBuffer = new StringBuffer();
            String line;
            int lineNumber=0;
            Map<String,Integer> valueMap=new HashMap<String,Integer>();
            while ((line = bufferedReader.readLine()) != null&& ++lineNumber<4) {

             String[] sArr=line.split("=");
             //Here you have the number, do whatever you want with it.
             Integer iNumber=Integer.parseInt(sArr[1]);

             valueMap.put(sArr[0],iNumber);


            }


        String expression = bufferedReader.readLine();//Read 4th line, expression, delimited by space
        String[] sArr=input.split(" ");
        int operand1=valueMap.get(sArr[0]);
        int operand2=valueMap.get(sArr[2]);
        int operand3=valueMap.get(sArr[3]);

        char operator1=sArr[1].charAt(0);
        char operator2=sArr[1].charAt(0);
  // Now Calculate and output.
  fileReader.close();
} catch (IOException e) {
    e.printStackTrace();
}

}
于 2013-09-08T10:58:07.573 回答
0

这就像语言处理,和纯粹的解析数据和处理一样。我不会为您提供代码,但想提供一种算法并希望看到您实现它。

  1. 循环读取第 1-3 行的每一行。
  2. 找到 '=' 的起始索引位置(提示:使用 Java indexOf)。
  3. 从 startIndex 读取到字符串结尾(提示:使用 Java subString)。
  4. Integer.parseInt()使用 Java (对于整数值)和(对于双精度值)解析值Double.parseDouble()并存储在局部变量中。(提示:见这里
  5. 最后读取表达式行字符串。
  6. 将表达式字符串拆分为单个字符(请参见此处的示例)。
  7. 遍历字符数组并找出每个字符并通过表达式计算值。

我希望这对你有用。

于 2013-09-08T11:03:51.500 回答
0

您可能想尝试 apache commons library:

String expression = FileUtils.readLines("D:\\TextFile.txt").get(3);

性能不是很好,但 API 看起来很优雅。

于 2013-09-08T10:47:58.920 回答