[英]Can't read file correctly?
我有一個正在制作的游戲,並且有一個角色選擇屏幕,您可以在該屏幕上添加/刪除角色。 添加字符效果很好,但是刪除部分很奇怪,所以我認為。
為delbutton刪除了代碼的ActionListener
這就引出了程序的delChar方法。
public static void delChar(int charNum)
{
String input;
try {
ArrayList<String> oldFile = new ArrayList<String>();
br = new BufferedReader(new FileReader(file));
while ((input = br.readLine()) != null)
{
if (!input.startsWith(charNum + "*"))
{
oldFile.add(input);
}
}
br.close();
FileWriter write = new FileWriter(file,false);
PrintWriter print = new PrintWriter(write);
for (int i =0;i<oldFile.size();i++)
{
print.printf("%s" + "%n", oldFile.get(i));
}
write.close();
print.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
然后進入此處的charSelect方法。
public static void charSelect(){
String[] stat = StatReader.getCharStats(charNum);
if (StatWriter.getCharCount() <1)
{
name.setText("No Characters Created");
classs.setText("");
lv.setText("");
ad.setText("");
md.setText("");
as.setText("");
armor.setText("");
mr.setText("");
health.setText("");
mana.setText("");
energy.setText("");
mReg.setText("");
eReg.setText("");
hReg.setText("");
}
try
{
name.setText(stat[0]);
classs.setText(stat[1]);
lv.setText(stat[2]);
ad.setText(stat[3]);
md.setText(stat[4]);
as.setText(stat[5]);
armor.setText(stat[6]);
mr.setText(stat[7]);
health.setText(stat[8]);
mana.setText(stat[9]);
energy.setText(stat[10]);
mReg.setText(stat[11]);
eReg.setText(stat[12]);
hReg.setText(stat[13]);
// System.out.println(charNum);
// System.out.println(Arrays.toString(stat));
}
catch(NullPointerException e)
{
}
MainMenu.MMframe.repaint();
MainMenu.MMframe.setVisible(true);
}
然后,我希望該屏幕將顯示“無字符”,但不會。 我發現的另一件事是,當我從文件中刪除字符時,確實確實刪除了字符,但是程序仍然認為它在那里?
這是涉及讀取文件的代碼。
public static String[] getCharStats(int CharNum)
{
try {
// System.out.println(CharNum);
try {
br = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
while ((input = br.readLine()) != null)
{
// System.out.println(input);
if (input.length() !=0)
{
if (input.startsWith(CharNum + "*"))
{
getMultiStatLine(14);
}
}
}
br.close();
// JOptionPane.showMessageDialog(null, "<html>Name:" + output[0]
// +"<br>Class:" + output[1]
// +"<br>Level:" + output[2]
// +"<br>Attack:" + output[3]
// +"<br>Magic:" + output[4]
// +"<br>Attack Speed:" + output[5]
// +"<br>Armor:" + output[6]
// +"<br>Magic Resist:" + output[7]
// +"<br>Health:" + output[8]
// +"<br>Mana:" + output[9]
// +"<br>Energy:" + output[10]
// +"<br>Mana Regen:" + output[11]
// +"<br>Energy Regen:" + output[12]
// +"<br>Health Regen:" + output[13]);
}
catch (IOException e) {e.printStackTrace();}
return output;
}
public static String[] getMultiStatLine(int Places)
{
output = new String[Places];
int[] bsSlots = new int[Places - 1];
int bsPoints = 0;
for (int i = 3; i < input.length();i++)
{
if (input.charAt(i) == '/')
{
// System.out.println("found /");
bsPoints++;
bsSlots[bsPoints-1] = i;
// System.out.println(bsPoints);
// System.out.println(Arrays.toString(bsSlots));
}
else if (bsPoints +1 == Places)
{
for (int c =0; c < Places; c++)
{
if (c == 0)
{
output[c] = input.substring(2,bsSlots[c]);
}
else if (c +1 == Places)
{
output[c] = input.substring(bsSlots[bsSlots.length - 1] + 1);
// System.out.println("c == " + Places);
}
else if (c > 0)
{
output[c] = input.substring(bsSlots[c-1] + 1,bsSlots[c]);
// System.out.println("c > 0");
}
// output[c] = input.substring();
}
i = input.length();
//md = input.substring(i + 1, input.length());
//ad = input.substring(2,i);
}
}
return output;
}
任何幫助,將不勝感激謝謝。
我可以看到您正在刪除文件中的字符,但是您不是在告訴程序忘記該字符,刪除后是否嘗試更新?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.