import java.io.*;
import java.io.RandomAccessFile;
import java.util.StringTokenizer;import javax.swing.JPanel;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.*;
public class Rank extends JDialog{
JPanel pRank=new JPanel(new GridLayout(11,3));
Rank(){
setTitle("英雄榜");
setSize(400, 400);
getContentPane().add(pRank);
setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - getSize().width) / 2,
(Toolkit.getDefaultToolkit().getScreenSize().height - getSize().height) / 2);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
set();
setVisible(true);
}
public void set(){
try
{
RandomAccessFile rankfile=new RandomAccessFile("Rank.txt","r");
byte[] b=new byte[1024];
int n=rankfile.read(b);
byte[] c = new byte[n];
for(int i=0;i<n;i++)
c[i]=b[i];
String rankstr=new String(c);
pRank.add(new JLabel("名次",JLabel.CENTER));
pRank.add(new JLabel("玩家签名",JLabel.CENTER));
pRank.add(new JLabel("得分数",JLabel.CENTER));
StringTokenizer st1=new StringTokenizer(rankstr,";");
int i=0;
while(st1.hasMoreTokens())
{
i++;
pRank.add(new JLabel(""+i,JLabel.CENTER));
StringTokenizer st2=new StringTokenizer(st1.nextToken(),":");
pRank.add(new JLabel(""+st2.nextToken() ,JLabel.CENTER));
pRank.add(new JLabel(""+st2.nextToken() ,JLabel.CENTER));
}
}catch(Exception e )
{ }
}
public static void main(String[] args) {
new Rank();
}}文本——Rank.txt
无名1:10000;无名2:6000;无名3:5000;无名4:4000;无名5:3000;无名6:2000;无名7:1000;无名8:500;无名9:200;无名10:100;功能要求:
1、最好不使用RandomAccessFile方式
2、最好使用vetor存放
*3、当对"文本Rank.txt"文件末尾追加一条记录(例如:记录14:5500),当该条记录的分数大于前面的分数,则按分数从大到小排序记录,并将分数最小的删除,然后写入"文本Rank.txt"并保存
*4、将文本中存放的记录,按分数从大到小输出面板中(共10条,以符号";"最为记录的间隔,以符号":"作为记录的名字和分数的间隔)
import java.io.RandomAccessFile;
import java.util.StringTokenizer;import javax.swing.JPanel;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.*;
public class Rank extends JDialog{
JPanel pRank=new JPanel(new GridLayout(11,3));
Rank(){
setTitle("英雄榜");
setSize(400, 400);
getContentPane().add(pRank);
setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - getSize().width) / 2,
(Toolkit.getDefaultToolkit().getScreenSize().height - getSize().height) / 2);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
set();
setVisible(true);
}
public void set(){
try
{
RandomAccessFile rankfile=new RandomAccessFile("Rank.txt","r");
byte[] b=new byte[1024];
int n=rankfile.read(b);
byte[] c = new byte[n];
for(int i=0;i<n;i++)
c[i]=b[i];
String rankstr=new String(c);
pRank.add(new JLabel("名次",JLabel.CENTER));
pRank.add(new JLabel("玩家签名",JLabel.CENTER));
pRank.add(new JLabel("得分数",JLabel.CENTER));
StringTokenizer st1=new StringTokenizer(rankstr,";");
int i=0;
while(st1.hasMoreTokens())
{
i++;
pRank.add(new JLabel(""+i,JLabel.CENTER));
StringTokenizer st2=new StringTokenizer(st1.nextToken(),":");
pRank.add(new JLabel(""+st2.nextToken() ,JLabel.CENTER));
pRank.add(new JLabel(""+st2.nextToken() ,JLabel.CENTER));
}
}catch(Exception e )
{ }
}
public static void main(String[] args) {
new Rank();
}}文本——Rank.txt
无名1:10000;无名2:6000;无名3:5000;无名4:4000;无名5:3000;无名6:2000;无名7:1000;无名8:500;无名9:200;无名10:100;功能要求:
1、最好不使用RandomAccessFile方式
2、最好使用vetor存放
*3、当对"文本Rank.txt"文件末尾追加一条记录(例如:记录14:5500),当该条记录的分数大于前面的分数,则按分数从大到小排序记录,并将分数最小的删除,然后写入"文本Rank.txt"并保存
*4、将文本中存放的记录,按分数从大到小输出面板中(共10条,以符号";"最为记录的间隔,以符号":"作为记录的名字和分数的间隔)
2、最好使用vetor存放
Vector废了
Vector废了
*3、当对"文本Rank.txt"文件末尾追加一条记录(例如:记录14:5500),当该条记录的分数大于前面的分数,则按分数从大到小排序记录,并将分数最小的删除,然后写入"文本Rank.txt"并保存
*4、将文本中存放的记录,按分数从大到小输出面板中(共10条,以符号";"最为记录的间隔,以符号":"作为记录的名字和分数的间隔) 排序,我把记录(字符串——姓名,整型——分数)分别存放在2个数组中,然后进行从大到小排序,现在是不知怎么把数组写入文件而且有":"、";"分隔符(例如: 无名4:5500;小王:5000;)修改后的代码import java.io.RandomAccessFile;
import java.util.StringTokenizer;
import javax.swing.JDialog;
import javax.swing.JLabel;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.*;public class Rank extends JDialog{ Rank(){ setTitle("英雄榜");
setSize(400, 400);
getContentPane().setLayout(new GridLayout(11,3));
add(new JLabel("名次",JLabel.CENTER));
add(new JLabel("玩家签名",JLabel.CENTER));
add(new JLabel("得分数",JLabel.CENTER));
setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - getSize().width) / 2,
(Toolkit.getDefaultToolkit().getScreenSize().height - getSize().height) / 2);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setRank();
setVisible(true);
}
public void setRank(){
try
{
RandomAccessFile rankfile=new RandomAccessFile("Rank.txt","r");
byte[] b=new byte[1024];
int n=rankfile.read(b);
byte[] c = new byte[n];
for(int i=0;i<n;i++)
c[i]=b[i];
String rankstr=new String(c);
String[] array1=new String[10];
int[] array2=new int[10];
String temp1;
int temp2=0,m=0;
StringTokenizer st1=new StringTokenizer(rankstr,";");
//把记录均存放在对应的数组中
while(st1.hasMoreTokens()){
StringTokenizer st2=new StringTokenizer(st1.nextToken(),":");
array1[m]=st2.nextToken();
array2[m]=Integer.parseInt(st2.nextToken());
m++;
}
//进行从大到小排序
for(int j=0,num=0;j<10;j++){
for(int i=j;i<10;i++)
if(array2[num]<array2[i])
num=i;
if(num!=j){
temp2=array2[num];
array2[num]=array2[j];
array2[j]=temp2;
temp1=array1[num];
array1[num]=array1[j];
array1[j]=temp1;
}
num=j+1;
}
//重新写入到文件中
//将记录输出到面板上
n=0;
while(n<10)
{
getContentPane().add(new JLabel(""+(n+1),JLabel.CENTER));
getContentPane().add(new JLabel(""+array1[n],JLabel.CENTER));
getContentPane().add(new JLabel(""+array2[n],JLabel.CENTER));
n++;
}
}catch(Exception e )
{ }
}
public static void main(String[] args) {
new Rank();
}}文本Rank.txt——无名2:6000;无名10:10;无名4:4000;无名5:3000;无名7:1000;无名9:200;无名3:5000;无名1:10000;无名8:50;无名6:2000;
*3、当对"文本Rank.txt"文件末尾追加一条记录(例如:记录14:5500),当该条记录的分数大于前面的分数,则按分数从大到小排序记录,并将分数最小的删除,然后写入"文本Rank.txt"并保存
*4、将文本中存放的记录,按分数从大到小输出面板中(共10条,以符号";"最为记录的间隔,以符号":"作为记录的名字和分数的间隔) 排序,我把记录(字符串——姓名,整型——分数)分别存放在2个数组中,然后进行从大到小排序,现在是不知怎么把数组写入文件而且有":"、";"分隔符(例如: 无名4:5500;小王:5000;)修改后的代码import java.io.RandomAccessFile;
import java.util.StringTokenizer;
import javax.swing.JDialog;
import javax.swing.JLabel;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.*;public class Rank extends JDialog{ Rank(){ setTitle("英雄榜");
setSize(400, 400);
getContentPane().setLayout(new GridLayout(11,3));
add(new JLabel("名次",JLabel.CENTER));
add(new JLabel("玩家签名",JLabel.CENTER));
add(new JLabel("得分数",JLabel.CENTER));
setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - getSize().width) / 2,
(Toolkit.getDefaultToolkit().getScreenSize().height - getSize().height) / 2);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setRank();
setVisible(true);
}
public void setRank(){
try
{
RandomAccessFile rankfile=new RandomAccessFile("Rank.txt","r");
byte[] b=new byte[1024];
int n=rankfile.read(b);
byte[] c = new byte[n];
for(int i=0;i<n;i++)
c[i]=b[i];
String rankstr=new String(c);
String[] array1=new String[10];
int[] array2=new int[10];
String temp1;
int temp2=0,m=0;
StringTokenizer st1=new StringTokenizer(rankstr,";");
//把记录均存放在对应的数组中
while(st1.hasMoreTokens()){
StringTokenizer st2=new StringTokenizer(st1.nextToken(),":");
array1[m]=st2.nextToken();
array2[m]=Integer.parseInt(st2.nextToken());
m++;
}
//进行从大到小排序
for(int j=0,num=0;j<10;j++){
for(int i=j;i<10;i++)
if(array2[num]<array2[i])
num=i;
if(num!=j){
temp2=array2[num];
array2[num]=array2[j];
array2[j]=temp2;
temp1=array1[num];
array1[num]=array1[j];
array1[j]=temp1;
}
num=j+1;
}
//重新写入到文件中
//将记录输出到面板上
n=0;
while(n<10)
{
getContentPane().add(new JLabel(""+(n+1),JLabel.CENTER));
getContentPane().add(new JLabel(""+array1[n],JLabel.CENTER));
getContentPane().add(new JLabel(""+array2[n],JLabel.CENTER));
n++;
}
}catch(Exception e )
{ }
}
public static void main(String[] args) {
new Rank();
}}文本Rank.txt——无名2:6000;无名10:10;无名4:4000;无名5:3000;无名7:1000;无名9:200;无名3:5000;无名1:10000;无名8:50;无名6:2000;
import java.io.*;
import javax.swing.JDialog;
import javax.swing.JLabel;
import java.awt.GridLayout;
import java.awt.Toolkit;
import javax.swing.JFrame;public class Rank extends JDialog{ Rank(){
setTitle("英雄榜");
setResizable(false);
setSize(400, 400);
getContentPane().setLayout(new GridLayout(11,3));
add(new JLabel("名次",JLabel.CENTER));
add(new JLabel("玩家签名",JLabel.CENTER));
add(new JLabel("得分数",JLabel.CENTER));
setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - getSize().width) / 2,
(Toolkit.getDefaultToolkit().getScreenSize().height - getSize().height) / 2);
setRank();
setVisible(true);
}
public void setRank(){
String str1,str2[],str3[];
StringBuffer str=new StringBuffer();
String[] array1=new String[10];
int[] array2=new int[10];
String temp1;
int temp2=0;
try {
BufferedReader in=new BufferedReader(new FileReader("Rank.txt"));
str1=in.readLine();
str2=str1.split(";");
for(int i=0;i<str2.length;i++){
str3=str2[i].split(":");
array1[i]=str3[0];
array2[i]=Integer.parseInt(str3[1]);
} //进行从大到小排序
for(int j=0,num=0;j<10;j++){
for(int i=j;i<10;i++)
if(array2[num]<array2[i])
num=i;
if(num!=j){
temp2=array2[num];
array2[num]=array2[j];
array2[j]=temp2;
temp1=array1[num];
array1[num]=array1[j];
array1[j]=temp1;
}
num=j+1;
}
//对记录进行重组
for(int i=0;i<10;i++){
str.append(array1[i]);
str.append(':');
str.append(array2[i]);
str.append(';');
}
in.close();
File file=new File("Rank.txt");
file.delete();
BufferedWriter out=new BufferedWriter(new FileWriter("Rank.txt"));
out.write(str.toString());
out.close();
//将记录输出到面板上
temp2=0;
while(temp2<10)
{
getContentPane().add(new JLabel(""+(temp2+1),JLabel.CENTER));
getContentPane().add(new JLabel(""+array1[temp2],JLabel.CENTER));
getContentPane().add(new JLabel(""+array2[temp2],JLabel.CENTER));
temp2++;
}
}catch(Exception e )
{ }
}
public static void main(String[] args) {
new Rank();
}
}文本Rank.txt—— 无名2:6000;无名10:10;无名4:4000;无名5:3000;无名7:1000;无名9:200;无名3:5000;无名1:10000;无名8:50;无名6:2000;
哪位朋友知道如何读取.jar中的文本文件,我程序编好了,导出了.jar运行程序,里面也包含了文本文件,可为什么程序不能读取?在编译器里测试一切正常。
??????????????????????????