📄 billboard.java
字号:
import java.io.*;
import javax.microedition.rms.*;
public class BillBoard { //广告牌
public static RecordStore rs;
public static int[] scoreTop3={0,0,0};
public static String[] userTop3=new String[3];
public static boolean opened=false;
//构造函数
public BillBoard()
{
initRs();
}
//判断本次分数是否可以进入榜单
public boolean canIn(int score)
{
update();
boolean tmp=true;
if(score<=scoreTop3[2])
{
tmp=false;
}
return tmp;
}
//显示榜单
public String showListTop3()
{
String tmp="";
for(int i=0;i<3;i++)
{
System.out.print("user="+userTop3[i]);
System.out.println(" score="+scoreTop3[i]);
tmp+=userTop3[i]+" "+scoreTop3[i]+"\n";
}
return tmp;
}
//加入榜单
public void addToBoard(String userName,int score)
{
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
DataOutputStream doSteam = new DataOutputStream(bo);
doSteam.writeUTF(userName);
doSteam.writeInt(score);
byte data[] = bo.toByteArray();
rs.addRecord(data, 0, data.length);
doSteam.close();
} catch (Exception e) {
e.printStackTrace();
}
update();
}
//取得前三名并删除后面的纪录
public void update()
{
//新建一个比较器
RecordComparator recordComparator = new RecordComparator() {//排序
public int compare(byte[] firstdata, byte[] seconddata) {
DataInputStream firstSteam = new DataInputStream(new ByteArrayInputStream(firstdata));
DataInputStream secondSteam = new DataInputStream(new ByteArrayInputStream(seconddata));
int firstRecord = 0;
int secondRecord = 0;
try {
firstSteam.readUTF();//跳过姓名
firstRecord = firstSteam.readInt();
secondSteam.readUTF();//跳过姓名
secondRecord = secondSteam.readInt();
} catch (IOException e) {
e.printStackTrace();
}
if (firstRecord == secondRecord) {
return RecordComparator.EQUIVALENT;
} else {
if (firstRecord < secondRecord) {
return RecordComparator.FOLLOWS;
} else {
return RecordComparator.PRECEDES;
}
}
}
};
try {
RecordEnumeration recordEnumeration = rs.enumerateRecords(null,
recordComparator, false);
int i = 0;
while (recordEnumeration.hasNextElement()) {
byte[] temp = recordEnumeration.nextRecord();
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(temp));
if (i < 3) {//只取前三名
userTop3[i]=stream.readUTF();
scoreTop3[i]=stream.readInt();
} else {
//删除后面的纪录
rs.deleteRecord(recordEnumeration.nextRecordId());
}
i++;
stream.close();
}
}catch (RecordStoreNotOpenException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
} catch (InvalidRecordIDException e) {
e.printStackTrace();
} catch (RecordStoreException e) {
e.printStackTrace();
}
}
//初始化rs
public void initRs()
{
rs=openRSAnyway("TOP3");
opened=true;
for(int i=0;i<3;i++)
{
addToBoard("Name",0);
}
}
//打开rs
public RecordStore openRSAnyway(String rsname) {
RecordStore rs = null;
// 名稱大於32 個字元就不接受
if (rsname.length() > 32)
return null;
try {
rs = RecordStore.openRecordStore(rsname, true);
return rs;
} catch (Exception e) {
return null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -