error: illegal start of type

2019-02-16 03:25发布

问题:

why this little piece of code is giving illegal start of type error in line 6 and 10(for loops).... i can't find any unmatched braces...

class StackDemo{
    final int size = 10;
    Stack s = new Stack(size);

    //Push charecters into the stack
    for(int i=0; i<size; i++){
        s.push((char)'A'+i);
    }
    //pop the stack untill its empty
    for(int i=0; i<size; i++){
        System.out.println("Pooped element "+i+" is "+ s.pop());
    }
}

I have the class Stack implemented,

回答1:

You can't use for loop in class level. Put them inside a method or a block

Also java.util.Stack in Java don't have such constructor.

It should be

Stack s = new Stack()

Another issue

s.push(char('A'+i))// you will get Unexpected Token error here

Just change it to

s.push('A'+i);


回答2:

You cannot use for loop inside a class body, you need to put them in some kind of method.

class StackDemo{
final int size = 10;
Stack s = new Stack(size);
public void run(){
   //Push charecters into the stack
   for(int i=0; i<size; i++){
       s.push(char('A'+i));
   }
   //pop the stack untill its empty
   for(int i=0; i<size; i++){
      System.out.println("Pooped element "+i+" is "+ s.pop());
   }
   }
}


回答3:

You can't just write code in a class, you need a method for that:

class StackDemo{
    static final int size = 10;
    static Stack s = new Stack(size);

    public static void main(String[] args) {
        //Push charecters into the stack
        for(int i=0; i<size; i++){
            s.push(char('A'+i));
        }
        //pop the stack untill its empty
        for(int i=0; i<size; i++){
            System.out.println("Pooped element "+i+" is "+ s.pop());
        }
    }
}

The method main is the entry point for a Java application. The JVM will call that method on program startup. Please notice that I've added the code word static to your variables, so they could be directly used in the static method main.