黑马程序员技术交流社区
标题:
FileWrite写入不停止
[打印本页]
作者:
郝福明
时间:
2013-1-2 11:09
标题:
FileWrite写入不停止
本帖最后由 郝福明 于 2013-1-5 08:58 编辑
public static void print() {
String name = null;
int sum = 0;
int i=0;
String score=null;
boolean flag = true;
Scanner sc = null;
BufferedWriter bfw = null;
Set<Student> sets = null;
while(i!=1) {
Grade grade = new Grade();
sc = new Scanner(System.in);
System.out.println("请输入姓名");
name = sc.next();
System.out.println("请输入" + CourseType.chinese + "成绩");
grade.chineseGrade = sc.nextInt();
System.out.println("请输入" + CourseType.math + "成绩");
grade.mathGrade = sc.nextInt();
System.out.println("请输入" + CourseType.english + "成绩");
grade.englishGrade = sc.nextInt();
System.out.println("请入选择是否继续输入,输入1暂停,输入0继续");
i=sc.nextInt();
sets = new TreeSet(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
int result = s1.getSum() - s2.getSum();
if (result == 0) {
result = s1.getName().compareTo(s2.getName());
}
return result;
}
});
sum = grade.chineseGrade + grade.mathGrade + grade.englishGrade;
sets.add(new Student(name, sum));
score="语文成绩"+grade.chineseGrade + "数学成绩" + grade.mathGrade + "英语成绩" + grade.englishGrade;
}
try {
bfw = new BufferedWriter(new FileWriter("D:\\NewFile\\exam\\src\\com\\itheima\\stu.txt"));
while(sets.size()!=0){
for(Student s:sets){
bfw.write(s.getName()+" "+score+"总成绩"+sum);
bfw.newLine();
bfw.flush();
}
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if(bfw!=null){
try {
bfw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
当我输入1结束的时候开始往txt里写,但是就是停止不了。一直写下去了,怎样让它停止啊。还有一个问题就是为什么sets的第二次输入会覆盖掉第一个?
作者:
肖志锋
时间:
2013-1-2 14:04
System.out.println("请入选择是否继续输入,输入1暂停,输入0继续");
i=sc.nextInt();
你这句话后面加个判断,if(i==1){break;}这是直接停止,跳出循环,我不知道你的暂停怎么弄。。
至于你说的覆盖的问题,我想可能是出在int result = s1.getSum() - s2.getSum();这一句了,我不知道你Student类的这个方法是怎么写的应该是总分吧?(不理解的是如果是总分,你后面为什么又要获取一个总分呢?),就算你的方法是总分吧 ,不过我觉得你应该是想判断是不是同一个学生吧?如果是这样的话,你为什么不先判断名字什么的呢?你先判断总分,这本身就有问题了,不同的人完全可能总分加起来一样的。
作者:
何竹冬
时间:
2013-1-3 15:41
你好
while(sets.size()!=0){
for(Student s:sets){
bfw.write(s.getName()+" "+score+"总成绩"+sum);
bfw.newLine();
bfw.flush();
}
}
把while循环去掉高级for循环就是在遍历set集合了不用while了,你的while循环是sets.size()!=0一直成立的,size不可能为0啊,你已经把学生对象存进去了。
所以会一直循环停不了。
把while循环去掉试试。
希望可以帮到你。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2