从方法中打印到文件
Print to file from within a method
我正在获取一个包含各种中缀表达式的输入文件,计算它们,并将它们打印回另一个输出文件,每行的格式如下:
%%%%% 的模 10 值是 %
输出文本和模10答案均正确;但是,我无法让程序重新打印 "OF" 和 "IS."
之间的整个表达式
我尝试将 output.write(token)
放入 getToken() 方法中,但出现 "cannot find symbol" 错误。所以我知道我无法从另一个方法访问 BufferedWriter,因为它是在 main 中声明的,但我该如何解决这个问题?
import java.io.*;
public class Lab1
{
public static char token;
public static String expr;
public static int k = 0;
public static void main (String[] args)
{
int exprValue;
String line;
try
{
BufferedReader input = new BufferedReader(new FileReader("inputfile.txt"));
BufferedWriter output = new BufferedWriter(new FileWriter("outputfile.txt"));
while ((line = input.readLine()) != null)
{
output.write("THE MODULO 10 VALUE OF ");
expr = line;
getToken();
output.write(token);
exprValue = expression();
output.write(" IS " + exprValue);
output.newLine();
output.newLine();
k = 0;
}
input.close();
output.close();
}
catch (IOException ex)
{
System.err.println("Exception:" + ex);
}
}
public static void getToken()
{
k++;
int count = k-1;
if(count < expr.length())
{
token = expr.charAt(count);
}
}
public static int expression()
{
int termValue;
int exprValue;
exprValue = term();
while(token == '+')
{
getToken();
termValue = term();
exprValue = (exprValue + termValue)%10;
}
return exprValue;
}
public static int factor()
{
int factorValue = token;
if(Character.isDigit(token))
{
factorValue = Character.getNumericValue(token);
getToken();
}
else if(token == '(')
{
getToken();
factorValue = expression();
if(token == ')')
{
getToken();
}
}
return factorValue;
}
public static int term()
{
int factorValue;
int termValue;
termValue = factor();
while(token == '*')
{
getToken();
factorValue = factor();
termValue = (termValue * factorValue)%10;
}
return termValue;
}
}
目前我的输入是:
(3*6+4)*(4+5*7)
3*((4+5*(1+6)+2))
我的输出是:
模 10 的值 ( 是 8
3 的模 10 值为 3
问题解决了。在 main 方法的 while 循环中,将 output.write(token)
替换为 output.write(expr)
我正在获取一个包含各种中缀表达式的输入文件,计算它们,并将它们打印回另一个输出文件,每行的格式如下:
%%%%% 的模 10 值是 %
输出文本和模10答案均正确;但是,我无法让程序重新打印 "OF" 和 "IS."
之间的整个表达式我尝试将 output.write(token)
放入 getToken() 方法中,但出现 "cannot find symbol" 错误。所以我知道我无法从另一个方法访问 BufferedWriter,因为它是在 main 中声明的,但我该如何解决这个问题?
import java.io.*;
public class Lab1
{
public static char token;
public static String expr;
public static int k = 0;
public static void main (String[] args)
{
int exprValue;
String line;
try
{
BufferedReader input = new BufferedReader(new FileReader("inputfile.txt"));
BufferedWriter output = new BufferedWriter(new FileWriter("outputfile.txt"));
while ((line = input.readLine()) != null)
{
output.write("THE MODULO 10 VALUE OF ");
expr = line;
getToken();
output.write(token);
exprValue = expression();
output.write(" IS " + exprValue);
output.newLine();
output.newLine();
k = 0;
}
input.close();
output.close();
}
catch (IOException ex)
{
System.err.println("Exception:" + ex);
}
}
public static void getToken()
{
k++;
int count = k-1;
if(count < expr.length())
{
token = expr.charAt(count);
}
}
public static int expression()
{
int termValue;
int exprValue;
exprValue = term();
while(token == '+')
{
getToken();
termValue = term();
exprValue = (exprValue + termValue)%10;
}
return exprValue;
}
public static int factor()
{
int factorValue = token;
if(Character.isDigit(token))
{
factorValue = Character.getNumericValue(token);
getToken();
}
else if(token == '(')
{
getToken();
factorValue = expression();
if(token == ')')
{
getToken();
}
}
return factorValue;
}
public static int term()
{
int factorValue;
int termValue;
termValue = factor();
while(token == '*')
{
getToken();
factorValue = factor();
termValue = (termValue * factorValue)%10;
}
return termValue;
}
}
目前我的输入是:
(3*6+4)*(4+5*7)
3*((4+5*(1+6)+2))
我的输出是:
模 10 的值 ( 是 8
3 的模 10 值为 3
问题解决了。在 main 方法的 while 循环中,将 output.write(token)
替换为 output.write(expr)