0

単純なオブジェクト指向プログラムを実装しようとして、深刻な問題が発生しています。次のように定義されたスタッククラスがあります...

    import java.io.*;
    public class stack
    {
        // instance variables - replace the example below with your own
        private int maxStack;
        private int emptyStack;
        private int top;
        private int[] stack;


        public stack(int size)
        {        
            maxStack = size;
            emptyStack = -1;
            top = emptyStack;
            stack = new int[maxStack];
        }

        public int push(int y)
        {
            top++;
            stack[top]= y;
            return 0;
        }

        public int pull(int y){
            int temp = top;
            top--;
            return stack[temp];    
        }

        public boolean isEmpty(){
            return top == emptyStack;
        }

        public void print(){
            for(int i =top;i<0;i--){
                System.out.println("Position "+top+" "+stack[top]);
            }

        }

    }

I am trying to reference this class from another class that I am calling...


     import java.io.*;

     public class stackTest
      {

       public void stackStarter(){

            System.out.println("Welcome to our Stack Simulator");
            InputStreamReader ir = new InputStreamReader(System.in);
            BufferedReader bf = new BufferedReader(ir);
            System.out.print("Enter number of elements : ");
            String str = bf.readLine();
            int num = Integer.parseInt(str);
            stack testStack = new stack(num);
            int test =5;
            testStack.push(test);



        }

        public static void main(String[] args){

          stackStarter TEST = new stackStarter();

        }


    }

エラーが発生し続けます...シンボルが見つかりません-クラスstackStarter. stackStarter メソッドのすべてのコードをメインに配置しようとしましたが、静的なメイン メソッドからスタック クラスにアクセスできません... 何か考えはありますか?

4

4 に答える 4

1

メソッドではなくクラスをインスタンス化する必要があります。メソッドmainは次のようになります。

public static void main(String[] args){

    stackTest test = new stackTest();
    test.stackStarter();

}

もう 1 つ、コードを記述する際には Java 命名規則に従う必要があります。たとえばstackTest、Java 命名標準によると、有効なクラス名ではありませんStackTest

于 2012-09-13T04:22:10.430 に答える
0

これを試して:

public static void main(String[] args)
{
    stackTest TEST = new stackTest();
    TEST.stackStarter();
}
于 2012-09-13T04:20:13.633 に答える
0

ええ、正確には stack と stackTest の 2 つのクラスしかないことを示しています。それはコンパイルされ、正常に動作します。

public class stackTest
      {

       public void stackStarter(){

            System.out.println("Welcome to our Stack Simulator");
            InputStreamReader ir = new InputStreamReader(System.in);
            BufferedReader bf = new BufferedReader(ir);
            System.out.print("Enter number of elements : ");
            String str = bf.readLine();
            int num = Integer.parseInt(str);
            stack testStack = new stack(num);
            int test =5;
            testStack.push(test);

        }

        public static void main(String[] args){

          stackTest TEST = new stackTest();
           TEST.stackStarter();    
    }
于 2012-09-13T04:21:02.617 に答える
0

これを試してください:

public class stackTest
{

   static void stackStarter(){

        System.out.println("Welcome to our Stack Simulator");
        InputStreamReader ir = new InputStreamReader(System.in);
        BufferedReader bf = new BufferedReader(ir);
        System.out.print("Enter number of elements : ");
        String str = bf.readLine();
        int num = Integer.parseInt(str);
        stack testStack = new stack(num);
        int test =5;
        testStack.push(test);



    }

    public static void main(String[] args){
      stackStarter();
    }

}

主な「落とし穴」は、stackStarter() を「クラス」ではなく「メソッド」にすることです。そのため、単にそれを呼び出します (「新しい」の代わりに)。

2 番目の「落とし穴」は、「main()」が静的クラスであることです。したがって、main() から stackStarter() を呼び出したい場合は、starckStarter() も静的である必要があります。

于 2012-09-13T04:21:13.117 に答える