当前位置: 首页 > 知识库问答 >
问题:

为什么main(string[]args)不接受这个?[副本]

党祖鹤
2023-03-14
import java.util.ArrayList;
import java.util.Iterator;
import java.util.NoSuchElementException;

class IntegerStackGeneric extends IntegerStack {
    ArrayList<Integer> stack;

    IntegerStackGeneric() {
        stack = new ArrayList<>();
    }

    public void push(int x) {
        stack.add(x);
        return;
    }

    public int pop() throws NoSuchElementException {
        if(!stack.isEmpty()) {
            throw new NoSuchElementException("IntegerStackGeneric: pop()");
        }
        return stack.remove(stack.size()-1);
    }

    public int size() {
        return stack.size();
        // return -1;
    }

    public boolean contains(int x) {
        return false;
    }

    public void reverse() {
        return;
    }

    public Iterator<Integer> iterator() {
        return new ArrayList<Integer>().iterator();
    }

    public static void main(String[] args) {
        stack.push(1);
        stack.push(2);
        stack.push(3);
        System.out.println(stack);
        System.out.println(stack.pop());
        System.out.println(stack);
    }
}

有人有什么想法吗?

共有1个答案

周正真
2023-03-14

答案就在错误消息中:

无法对非静态字段堆栈进行静态引用。

您的堆栈字段是实例字段。main是一个静态方法,此时没有实例。如果要使用堆栈,则需要一个实例,例如:

IntegerStackGeneric isg = new IntegerStackGeneric();
isg.stack.push(/*...*/);
IntegerStackGeneric isg = new IntegerStackGeneric();
isg.doStuff();
private void doStuff() {

    stack.push(1);
    stack.push(2);
    stack.push(3);
    System.out.println(stack);
    System.out.println(stack.pop());
    System.out.println(stack);
}
 类似资料:
  • 问题内容: 由于它可能是Java语言中使用最广泛的方法之一,因此为什么它必须接受字符串数组并且没有它就无法工作?例如,我可以一直住: 过度 除了能够接受命令行参数之外,还有其他更高的目的吗,尤其是因为绝大多数Java程序都是GUI驱动的,并且不需要通过命令行接收args? 问题答案: 甚至GUI驱动的Java应用程序也将从某些主要方法开始。“更高的目的”从来没有接受命令行参数。 目的只是接受参数。

  • 问题内容: 之间有什么区别: 和 我不相信,但是我想知道。 问题答案: 从语义上讲,它们是相同的。但是,我建议在声明数组时使用后一种语法()。以前的语法主要用于与C语法兼容。 因为总体上来说,它是Java中对象的类型,所以它更加一致,而且很清楚不要将其拆分。

  • 在上面的代码中,为什么在< code>main()中强制提到< code>String args[]以及为什么我们得到< code > "[ljava . lang . String;@174e5edb"作为输出?

  • 我只是想知道为什么有必要在main方法中使用String args[]。 我知道它用于命令行参数,但每次我们运行程序时,命令行是不必要的。 提前感谢您的回答。

  • 问题内容: 我知道String [] args是作为参数传递给main的字符串数组。 但是,当您不将其包含为参数时(即使您不使用它),它也会引发异常。那么为什么需要它呢?另外,为什么不能是int []或boolean []? 问题答案: 这是一个字符串,因为命令行以文本形式表示。如果要将文本转换为整数或布尔值,则必须自己做- 操作系统或Java引导程序如何确切知道您希望如何解析所有内容?我想Jav