Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的文件I/O_Java_Oop_File Io_Vector_Stack - Fatal编程技术网

Java中的文件I/O

Java中的文件I/O,java,oop,file-io,vector,stack,Java,Oop,File Io,Vector,Stack,我自己的Vector类的代码有问题 已修复。在文件中增加了读写功能,但这种尝试/捕获功能对我来说太麻烦了。也许有更好的文件I/O方式 修复了-2哦,我刚刚发现了“抛出”,现在我的代码看起来非常好。谢谢大家的帮助!下面是Stack.java的最终版本: import java.util.Scanner; import java.io.*; class Vector { private int[] vec; private int length, pointer;

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

已修复。在文件中增加了读写功能,但这种尝试/捕获功能对我来说太麻烦了。也许有更好的文件I/O方式

修复了-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();
    }
}
import java.util.Scanner;
导入java.io.*;
类向量{
私有int[]vec;
私有整数长度,指针;
公共向量(int n){
指针=0;
长度=n;
vec=新整数[长度];
}
公共整数获取(整数i){
返回向量[i];
}
公共无效集(int i,int n){
vec[i]=n;
}
公共无效推送(int n){
如果(指针==长度){
int[]nvec=新的int[length*2];
for(int i=0;i对于(int i=0;i您的语法是错误的。也许您的意思是这样的:

Vector stack = new Vector(10);

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

您的语法是错误的。也许您的意思是:

Vector stack = new Vector(10);

另外,您确定要在堆栈类中使用Vector类吗?另外,一般来说,将类命名为与现有Java类相同的名称是一个不好的主意。

初始化Vector类,如下所示

 Vector stack = new Vector(10);

初始化Vector类,如下所示

 Vector stack = new Vector(10);

nvec
没有声明?应该是
int[]nvec=newint[legnth*2];
哦,我刚刚发现了“throws”,它看起来真的很好。没有声明
nvec
?应该是
int[]nvec=newint[legnth*2];
哦,我刚刚发现了“throws”,它看起来真的很好。