java关于readline的使用
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.Stack;
public class project2 {
public static void main(String args[]){
String a=null;
int i;
Stack<css> si=new Stack<css>();
File aFile = new File("d:/a.txt");
try {
PrintWriter pw = new PrintWriter(aFile);
BufferedReader br=new BufferedReader(new FileReader("d:/Production.txt"));
css b;
a=br.readLine();
while(a!= null)
{
b=new css(a);
si.push(b);
a = br.readLine();
}
Iterator<css> it=si.iterator();
while(it.hasNext()){
css j=it.next();
pw.println(j.zuo+"->"+j.you);
j.print();
pw.flush();
}
pw.close();
br.close();
} catch (FileNotFoundException e) {
System.out.println("FileNotFoundException");
}
catch (IOException e) {
System.out.println("IOException");
}
}
}
public class css {
String zuo;
String you;
css(String t)
{
if(t.indexOf("-")>=0)
{
zuo=t.substring(0, t.indexOf("-"));
you=t.substring(t.indexOf(">")+1, t.length());
}
}
boolean equal(css t)
{
if(t.zuo.equals(zuo)&&t.you.equals(you))
{
return true;
}
else
{
return false;
}
}
void print()
{
System.out.println(zuo+"->"+you);
}
}
其中d:/Production.txt文件存放的是
A -> aB
C -> sdfdf
为什么输出的是
A -> aB
C -> sdfdf
null->null
多了null->null。
我已经判断a!=null为什么
while(a!= null)
{
b=new css(a);
si.push(b);
a = br.readLine();
}
还执行了一次把空对象押入了???
[解决办法]
别的地方没看,只说这里:
a=br.readLine();
while(a!= null)
{
}
一行一行读取时,while循环不是这么写的
改成:
while((a = br.readLine())!= null)
{
}