在自己扫雷程序中写了一个当赢了的时候执行的方法,
目的是提示一个对话框,说你赢了,时间多少[实现已经]
[未实现]之后再判断result.txt中的数据,
如果当中数据少于10行则要求输入name.
并按照time从小到大的顺序将name+","+time+";"+"\n"插入适当的位置;
如果数据等于10行,则删掉time最大的那行,并按照time从小到大的顺序将name+","+time+";"+"\n"插入适当的位置;
===========================
刚刚接触JAVA的文件操作,我自己已经实现的那部分写入操作还是baidu好久才会的;
还有个问题就是try和catch是干嘛的啊?处理异常的吗?
=============以下方法的源代码==============public void result(int time){
try{
BufferedReader bin=null; BufferedWriter bout=null; File resultFile = new File("result.txt");
if( ! resultFile. exists() ){
resultFile.createNewFile();
return;
}
FileReader in = new FileReader(resultFile);
FileWriter out = new FileWriter(resultFile,true);
bin=new BufferedReader(in);
bout=new BufferedWriter(out);
JTextField nameField = new JTextField("MagicWolf");
JTextField info2Field = new JTextField();
JTextField name2Field = new JTextField("大名:");
name2Field.setEditable(false);
info2Field.setEditable(false);
info2Field.setText("你赢了!时间:"+Integer.toString(time));
JPanel panel4 = new JPanel();
panel4.setLayout(new BorderLayout());
panel4.add(nameField,BorderLayout.CENTER);
panel4.add(info2Field,BorderLayout.NORTH);
panel4.add(name2Field,BorderLayout.WEST);
JOptionPane.showMessageDialog(panel,panel4);
String name;
name = nameField.getText();
bout.write(name+","+time+";"+"\n");
bout.flush(); in.close();
out.close();
}
catch(IOException ee){} }
目的是提示一个对话框,说你赢了,时间多少[实现已经]
[未实现]之后再判断result.txt中的数据,
如果当中数据少于10行则要求输入name.
并按照time从小到大的顺序将name+","+time+";"+"\n"插入适当的位置;
如果数据等于10行,则删掉time最大的那行,并按照time从小到大的顺序将name+","+time+";"+"\n"插入适当的位置;
===========================
刚刚接触JAVA的文件操作,我自己已经实现的那部分写入操作还是baidu好久才会的;
还有个问题就是try和catch是干嘛的啊?处理异常的吗?
=============以下方法的源代码==============public void result(int time){
try{
BufferedReader bin=null; BufferedWriter bout=null; File resultFile = new File("result.txt");
if( ! resultFile. exists() ){
resultFile.createNewFile();
return;
}
FileReader in = new FileReader(resultFile);
FileWriter out = new FileWriter(resultFile,true);
bin=new BufferedReader(in);
bout=new BufferedWriter(out);
JTextField nameField = new JTextField("MagicWolf");
JTextField info2Field = new JTextField();
JTextField name2Field = new JTextField("大名:");
name2Field.setEditable(false);
info2Field.setEditable(false);
info2Field.setText("你赢了!时间:"+Integer.toString(time));
JPanel panel4 = new JPanel();
panel4.setLayout(new BorderLayout());
panel4.add(nameField,BorderLayout.CENTER);
panel4.add(info2Field,BorderLayout.NORTH);
panel4.add(name2Field,BorderLayout.WEST);
JOptionPane.showMessageDialog(panel,panel4);
String name;
name = nameField.getText();
bout.write(name+","+time+";"+"\n");
bout.flush(); in.close();
out.close();
}
catch(IOException ee){} }
在JAVA中处理文件会抛异常的。所以要用try-catch来进行对这段代码的监听。
至于你的result.txt可以将文件以行的读出来,排序,当成db 来操作,这样用随机读写文件的类来插到符合条件的行,然后删除最后1行
int i = 0;
String s1;
String reStr = "";
char[] tempChar= s.toCharArray();
while(tempChar[i]!=',') {
reStr += tempChar[i];
i++;
}
return reStr;
}
public void result(int time){
try{
BufferedReader bin=null; BufferedWriter bout=null; File resultFile = new File("result.txt");
if( ! resultFile. exists() ){
resultFile.createNewFile();
return;
}
FileReader in = new FileReader(resultFile);
FileWriter out = new FileWriter(resultFile,true);
bin=new BufferedReader(in);
bout=new BufferedWriter(out);
JTextField nameField = new JTextField();
JTextField info2Field = new JTextField();
info2Field.setEditable(false);
info2Field.setText("你赢了!时间:"+Integer.toString(time));
JPanel panel4 = new JPanel();
panel4.setLayout(new BorderLayout());
panel4.add(nameField,BorderLayout.CENTER);
int timeIndex=-1;
String readline[] = {null,null,null,null,null,null,null,null,null,null};
for(int i = 0;i<10;i++){
readline[i] = bin.readLine();
if(readline[i]==null)
break;
}
int times[]= new int[10];
for(int i =0;i<10;i++){
String str;
str = stringCut(readline[i]);
times[i]=Integer.parseInt(str);
if(time < times[i])
{timeIndex=i;break;}
}
if(timeIndex==-1){
nameField.setText("很遗憾,未进英雄榜!");
nameField.setEditable(false);
JOptionPane.showMessageDialog(panel,panel4);
}
else {
nameField.setText("MagicWolf");
JTextField name2Field = new JTextField("大名:");
name2Field.setEditable(false);
panel4.add(info2Field,BorderLayout.NORTH);
panel4.add(name2Field,BorderLayout.WEST);
JOptionPane.showMessageDialog(panel,panel4); String name;
name = nameField.getText();
for(int i=0;i<timeIndex;i++){
bout.write(readline[i]+"\n");
} bout.write(time+","+name+";"+"\n");
for(int i= timeIndex;i<10;i++){
bout.write(readline[i]+"\n");
}
bout.flush();
in.close(); out.close();
}
}
catch(IOException ee){} }
==========为了实现该方法,我把它改成上面的=================
可以通过编译,
但是执行result(time);的时候没啥反映...
应该很多地方错了..大虾们帮帮纠正下上面的代码
楼上我修改的代码有这个问题...