2014-03-04 22 views
0

我對自己的Vector類的代碼有問題。Java中的文件I/O

FIXED。增加了讀取和寫入文件,但這種嘗試/抓住的東西看起來太麻煩了。也許有更好的文件I/O方式?

FIXED-2哦,我剛剛發現「拋出」,現在我的代碼看起來非常好。感謝大家的幫助!以下是Stack.java的最終版本:

import java.util.Scanner; 
import java.io.*; 

class Vector { 

     private int[] vec; 
     private int length, pointer; 

     public Vector(int n) { 
      pointer = 0; 
      length = n; 
      vec = new int[length]; 
     } 

     public int get(int i) { 
      return vec[i]; 
     } 
     public void set(int i, int n) { 
      vec[i] = n; 
     } 

     public void push(int n) { 
      if (pointer == length) { 
       int[] nvec = new int[length*2]; 
       for (int i = 0; i < length; i++) 
        nvec[i] = vec[i]; 
       length *= 2; 
       vec = null; 
       vec = nvec; 
      } 
      vec[pointer++] = n; 
     } 

     public void delete() { 
      pointer--; 
      if (pointer == length/4) { 
       int[] nvec = new int[length/2]; 
       for (int i = 0; i <= pointer; i++) 
        nvec[i] = vec[i]; 
       length /= 2; 
       vec = null; 
       vec = nvec; 
      } 
     } 

     public int size() { 
      return pointer; 
     } 
     public int actualSize() { 
      return length; 
     } 
    } 

public class Stack { 

    public static void main(String[] args) throws IOException { 

     File ifile = new File("stack1.in"); 
     BufferedReader reader = new BufferedReader(new FileReader(ifile)); 

     File ofile = new File("stack1.out"); 
     BufferedWriter writer = new BufferedWriter(new FileWriter(ofile)); 

     int n = Integer.parseInt(reader.readLine()); 

     Vector stack = new Vector(10); 
     for (int i = 0; i < n; i++) { 
      String s = reader.readLine(); 
      if (s.charAt(0) == '-') { 
       writer.write(Integer.toString(stack.get(stack.size()-1))); 
       writer.write("\n"); 
       stack.delete(); 
      } else { 
       s = s.substring(2); 
       stack.push(Integer.parseInt(s)); 
      } 
     } 

     writer.close(); 
     reader.close(); 
    } 
} 
+0

沒有聲明'nvec'?它應該是'int [] nvec = new int [legnth * 2];' – ItachiUchiha

+0

哦,我剛剛發現「拋出」,它看起來非常好。 –

回答

4

您的語法錯誤。也許你的意思是這樣的:

Vector stack = new Vector(10); 

另外,你確定你想要你的Stack類在你的Stack類嗎?此外,將類命名爲與現有Java類相同的東西通常是一個壞主意。

0

初始化向量類,如下

Vector stack = new Vector(10); 
0
Vector stack = new Vector(10);