2013-01-10 75 views
0

我爲我製作的遊戲製作了一個java類級別。爲了快速閱讀並簡化代碼,數據採用ASCII格式。問題是這個班似乎沒有執行。這可以用一些修改工作嗎?如何從文件中讀取ASCII變量爲int變量

這是我怎麼稱呼它:

class G 
    {   
     /* Variables */ 

     public G() 
      { 
       addKeyListener(new keys()); 
       setPreferredSize(new Dimension(w, h)); 
       setFocusable(true); 
       Levels l = new Levels(1); 
       System.out.print(l.blocks); 

      } 
     /* Code */ 
    } 

這是類。

class Levels 
    { 
     int blocks, bl; 
     int[] alt, bgc, gc; 
     private int k; 

     public Levels(int level) 
      { 
       try 
        { 
         FileInputStream levelfile = new FileInputStream("levels/level/" + level + ".lvl"); 
         Scanner ls = new Scanner(levelfile); 
         this.bl=((int)ls.nextByte())-32; 
         this.blocks=(int)ls.nextByte()-32; 
         for(k=0; k<6; k++) 
          { 
           this.bgc[k]=((int)ls.nextByte()-32)*2; 
          } 
         for(k=0; k<6; k++) 
          { 
           this.gc[k]=((int)ls.nextByte()-32)*2; 
          } 
         for(k=0; k<blocks; k++) 
          { 
           this.bgc[k]=((int)ls.nextByte()-32)*2; 
          } 
        } 
       catch(FileNotFoundException error) 
        { 
         System.out.print("Level not found..." + error); 
        } 
      } 
    } 
+1

這是很難想象你是從代碼做什麼。你能製作一個你想要的文件格式的簡單描述嗎? –

+0

正如我所看到的,他試圖保存/加載'int blocks,bl; int [] alt,bgc,gc;'fields。 – Andremoniy

回答

0

請使用DataInputStream/DataOutputStream用於上述目的。它會解決你的想法中的很多問題。

UPD:http://docs.oracle.com/javase/tutorial/essential/io/datastreams.html

UPD-2我不建議你使用DataInputStream閱讀文本文件。我建議不要爲了您的目的使用文本(ascii)文件表示。

UPD-3好的。如果你還想讀/寫文本文件,那麼有幾個建議。 1)根據您的讀取文件代碼,在寫入值之間不使用任何分隔符。不是嗎?最簡單的方法是使用回車,即將每個值寫入新行。

2)在這種情況下,它很可能是更方便使用BufferedReader讀這樣的文件:

FileInputStream fis = new FileInputStream('... your path ...'); 
InputStreamReader isr = new InputStreamReader(fis); 
BufferedReader br = new BufferedReader(isr); 

String line; 

line = br.readLine(); 
this.bl = Integer.parseInt(line); 

line = br.readLine(); 
this.blocks= Integer.parseInt(line); 

... and so on 

br.close(); 
+0

我不確定這些是保存/閱讀文本的最佳方式。 –

+0

@PeterLawrey,我同意,但我不建議閱讀這種方式的文本文件。我建議不要使用文本文件,但使用'DataStream'-s寫/讀所有需要的值。 – Andremoniy

+0

我相信他希望能夠編輯/可視化他的水平,而不必編寫工具來做到這一點。在編輯器中閱讀文本文件更容易。 –