import java.io.*; public class PushbackReaderDemo{//1 public static void main(String[] args){//2 
char[] symbols= {'<','>', '≤', '≥','≠','='}; try{//3 
PushbackReader pushbackReader = new PushbackReader(new FileReader( 
args[0])); 
FileWriter fileWriter = new FileWriter("math_"+args[0]); 
int c= 0 ; 
while ((c=pushbackReader.read())!=-1){//4 int poss= -1; 
switch (c){//5 case '<': poss = 0 ; break; 
case '>': poss = 1 ; break; 
case '!': poss = 2 ; break; 
case '=': poss = 3 ; break; 
default: fileWriter.write(c); 
}//5 if(poss!=-1){//6 
if((c=pushbackReader.read())=='='){//7 fileWriter.write(symbols[poss+2]); 
fileWriter.write(' '); 
}//7 
else { 
pushbackReader.unread(c); 
fileWriter.write("symbols[poss]"); 

}//6 
}//4 
pushbackReader.close(); 
fileWriter.close(); }//3 
catch (ArrayIndexOutOfBoundsException e ){System.out.println("请指定文件");} 
catch (IOException e){e.printStackTrace();} 
}//2 
}//1

解决方案 »

  1.   

    忘 了提问了
    以上程序代码是实现将= <= >= != 利用PushbackReader的推回 实现代换成=≤≥≠ 可是很迷糊 能不能就 a+b<=5 做例子给出一下程序进行流程 
    就从程序 读到<号开始就行 希望 给出详细 形象一点 
    pushbackReader.unread(c); 
    fileWriter.write("symbols[poss]"); 
    这一句里的 unread(c)到底是把C推了哪去了,是下回再读取 这个吗?还有fileWriter.write("symbols[poss]")这个是必然输出 吗??那应该不论怎么都有一个<号会出现的啊???