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