各位大侠,我刚学java,最近学到了字符流,有一道题一直不对,哪位好心人愿意抽出宝贵时间帮帮我,本人在这先谢谢了!具体错误:1.输入完学号和姓名之后,没有提示输入语文和数学成绩,直接跳到"继续输入下一个学生信息请按c,退出输入请按q:"
        2.生成的d:/student.txt文件只保存最后一次,其他全被覆盖
         3.如何把d:/student.txt文件里的内容排版成题目要求那样题目要求:请输入学生学号:  06122225
请输入学生姓名: Tom
请输入语文成绩: 48.5
请输入数学成绩: 97
继续输入下一个学生信息请按c,退出输入请按q:  c
请输入学生学号:  06122227
请输入学生姓名: Tommmmm
请输入语文成绩: 78.5
请输入数学成绩: 92
继续输入下一个学生信息请按c,退出输入请按q:  q
以上信息已经被保存到d:/student.txt文件中去了d:/student.txt内容如下:
06122225
Tom
78.5
92
==============
06122227
Tommmmm
48.5
97
==============
我的程序:import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;public class HomeWork
{
public void id(String addr)//学号
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
FileWriter fw=null;
BufferedWriter bw=null;
System.out.print("请输入学生学号:");
String s1 =null;
try
{
fw=new FileWriter("d:/student.txt");
bw=new BufferedWriter(fw);
s1 = br.readLine();
bw.write(s1);
bw.newLine();

} catch (IOException e)
{
e.printStackTrace();
} finally
{
if(bw != null)
try
{
bw.close();
} catch(IOException e)
{
e.printStackTrace();
}
}
} public void name(String addr)//姓名
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
FileWriter fw=null;
BufferedWriter bw=null;
System.out.print("请输入学生姓名:");
String s2 =null;
try
{
fw=new FileWriter("d:/student.txt");
bw=new BufferedWriter(fw);
s2 = br.readLine();
bw.write(s2);
bw.newLine();

} catch (IOException e)
{
e.printStackTrace();
} finally
{
if(bw != null)
try
{
bw.close();
} catch(IOException e)
{
e.printStackTrace();
}
}
} public void chinese(String addr)//语文成绩
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
FileWriter fw=null;
BufferedWriter bw=null;
int src=0;
while(src>0 && src<150)
{
System.out.print("请输入语文成绩:");
String s3 =null;
int i1=0;
try
{
fw=new FileWriter("d:/student.txt");
bw=new BufferedWriter(fw);
s3 = br.readLine();
i1 = Integer.parseInt(s3);
bw.write(i1);
bw.newLine();
} catch (IOException e)
{
e.printStackTrace();
} finally
{
if(bw != null)
try
{
bw.close();
} catch(IOException e)
{
e.printStackTrace();
}
}
}
} public void math(String addr)//数学成绩
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
FileWriter fw=null;
BufferedWriter bw=null;
int src=0;
while(src>0 && src<150)
{
System.out.print("请输入数学成绩:");
String s4=null;
int i2 =0;
try
{
fw=new FileWriter("d:/student.txt");
bw=new BufferedWriter(fw);
s4 = br.readLine();
i2 = Integer.parseInt(s4);
bw.write(i2);
bw.newLine();
} catch (IOException e)
{
e.printStackTrace();
} finally
{
if(bw != null)
try
{
bw.close();
} catch(IOException e)
{
e.printStackTrace();
}
}
}
} public static void main(String[] args)
{
HomeWork hw=new HomeWork();
String input = null;
boolean result=false;

do
{
hw.id("d:/student.txt");
hw.name("d:/student.txt");
hw.chinese("d:/student.txt");
hw.math("d:/student.txt");
System.out.print("继续输入下一个学生信息请按c,退出输入请按q:");
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try
{
input=br.readLine();
} catch (IOException e)
{
e.printStackTrace();
}
}while((result=input.equals("q"))!=true);
}
}

解决方案 »

  1.   

    顶楼上上上!如果输出有格式要求就用
    pw.printf("%1$-20s:%2$-10s", "hello", "world");
    这样格式打印可以了
      

  2.   

    不要读一个数据就写一个数据,把整个数据都出来后一次性写.
    还有针对你的按c就写,按q就退出的功能,你好象没实现
    我有个想法是这样的,先读入System.in,判断是c还是q,如果是"c",则打开文件,打开输入流,这时输入的内容应该都保存在System.in 里面,并在每行后面加一个"\r\n"(因为你用的是readLine()),判断输入的内容是不是"q",如果不是,继续输入,如果是"q",则舍去最后一行(因为是"q"),将前面的内容一次性写入文件.
    前面一开始便是"q"的话,那直接退出程序了,没什么好说的.
      

  3.   

    import java.io.*; 
     public class HomeWork{
    public  static String id() throws IOException{
    BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
    System.out.print("请输入学生学号:");
    String s;
    s=in.readLine();
    return s;
    }
    public static String name() throws IOException{
    BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
    System.out.print("请输入学生姓名:");
    String s;
    s=in.readLine();
    return s;
    }
    public static String chinese() throws IOException{
    BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
    System.out.print("请输入学生语文成绩:");
    String s;
    s=in.readLine();
    return s;
    }
    public static String math() throws IOException{
    BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
    System.out.print("请输入学生数学成绩:");
    String s;
    s=in.readLine();
    return s;
    }
    public static boolean ifexit() throws IOException{
    boolean result=false;
    BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
    System.out.print("继续输入下一个学生信息请按c,退出输入请按q:");
    String s;
    s=in.readLine();
            if(result=s.equals("q"))
             result=true;
            return result;
    }

    public static void writeFile(String addr) throws IOException{
    BufferedWriter out=new BufferedWriter(new FileWriter(addr));
    do{
    out.write(id());
    out.newLine();
    out.write(name());
    out.newLine();
    out.write(chinese());
    out.newLine();
    out.write(math());
    out.newLine();
    }while(ifexit()!=true);
    out.close();
    }

    public static void main(String[] args) throws IOException{
    HomeWork homeWork=new HomeWork();
    homeWork.writeFile("d:/student.txt");

    }
    }
    这是我写的,参考参考吧!