java - Java 中的文件 I/O

标签 java oop file-io vector stack

我自己的 Vector 类的代码有问题。

已修复。添加了对文件的读取和写入,但是这个 try/catch 的东西对我来说看起来太麻烦了。也许有更好的文件 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();
    }
}

最佳答案

你的语法错误。也许你的意思是这样的:

Vector stack = new Vector(10);

另外,您确定要将 Vector 类放在 Stack 类中吗?另外,将类命名为与现有 Java 类相同的名称通常是个坏主意。

关于java - Java 中的文件 I/O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22175998/

相关文章:

oop - 使用面向对象的分析和设计对电梯进行建模

java - 如何读取文件、反转顺序和反转顺序写入

python - 二进制模式下 io.FileIO 和 open() 的区别

c - C语言编程中的数据库

java - java.lang.ClassCastException:无法将java.lang.Boolean强制转换为org.apache.pig.data.Tuple

java - 如何在 Spring MVC REST 测试中重定向模拟请求?

c# - 将多个对象类型传递到有限制的集合的正确方法

java - ATG 中自定义表单处理程序的错误处理

java - 不同平台之间的数据传输协议(protocol)

java - java中可以创建多少个嵌套的 "new"对象?