簡體   English   中英

Java中的文件I / O

[英]File I/O in Java

我自己的Vector類的代碼有問題。

已修正 添加了對文件的讀寫功能,但是這種嘗試/捕獲對我來說太麻煩了。 也許有更好的文件I / O方式?

FIXED-2哦,我剛剛發現了“ throws”,現在我的代碼看起來非常不錯。 謝謝大家的幫助! 這是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();
    }
}

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

Vector stack = new Vector(10);

另外,您確定要在堆棧類中包含Vector類嗎? 同樣,將類命名為與現有Java類相同的名稱通常也是個壞主意。

如下初始化Vector類

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM