简体   繁体   中英

Error compiling basic java code

New to java. Practicing coding by following a book.

Heres my code:

class Motorcycle {


    //Three instance variables - make and color are strings. while a boolean refers to TRUE OR FLASE(in this case off or on)
    String make;
    String color;
    boolean engineState;

    void startEngine() {
        if (engineState == true)
            System.out.print("The engine is already on.");
        else {
            engineState = true;
            System.out.print("The engine is now on.");

        }

    void showAtts() {
        System.out.print("This motorcycle is a " + color + " " + make);
        if (engineState ==true)
            System.out.print("The engine is on.");
        else System.out.print("The engine is off.");

    }
}
}

When I compile I get 2 errors:

1) illegal start of expression 2) ; expected

I can't pin point the problem. If anyone can direct me or hint me please do.

One of your braces was in the wrong place. Should be:

class Motorcycle {

//Three instance variables - make and color are strings. while a boolean refers to TRUE OR FLASE(in this case off or on)
  String make;
  String color;
  boolean engineState;

  void startEngine() {
    if (engineState == true)
      System.out.print("The engine is already on.");
    else {
      engineState = true;
      System.out.print("The engine is now on.");
    }
  }
  void showAtts() {
    System.out.print("This motorcycle is a " + color + " " + make);
    if (engineState ==true)
      System.out.print("The engine is on.");
    else System.out.print("The engine is off.");
  }
}

方法startEngine没有其右花括号,并且在代码末尾还有另一个备用的右花括号

You have defined showAtts() method inside startEngine() method. A method cannot have definition of another method.

This might be due to braces being placed wrongly. Correct them.

class Motorcycle {

    // Three instance variables - make and color are strings. while a
    // boolean refers to TRUE OR FLASE(in this case off or on)
    String make;
    String color;
    boolean engineState;

    void startEngine() {
        if (engineState == true)
            System.out.print("The engine is already on.");
        else {
            engineState = true;
            System.out.print("The engine is now on.");

        }
    }

    void showAtts() {
        System.out.print("This motorcycle is a " + color + " " + make);
        if (engineState == true)
            System.out.print("The engine is on.");
        else
            System.out.print("The engine is off.");

    }
}

You are trying to define a method inside another method:

void startEngine() {
   if (engineState == true)
        System.out.print("The engine is already on.");
   else {
       engineState = true;
        System.out.print("The engine is now on.");

   }

 void showAtts() {
   System.out.print("This motorcycle is a " + color + " " + make);
   if (engineState ==true)
       System.out.print("The engine is on.");
   else System.out.print("The engine is off.");

}
}

Seperate out the methods :

void startEngine() {
   if (engineState == true)
        System.out.print("The engine is already on.");
   else {
       engineState = true;
        System.out.print("The engine is now on.");
   }
}  // forgot this paranthesis


void showAtts() {
   System.out.print("This motorcycle is a " + color + " " + make);
   if (engineState ==true)
       System.out.print("The engine is on.");
   else System.out.print("The engine is off.");

}
class Motorcycle {


//Three instance variables - make and color are strings. while a boolean refers to TRUE OR FLASE(in this case off or on)
String make;
String color;
boolean engineState;

void startEngine() {
    if (engineState == true)
        System.out.print("The engine is already on.");
    else {
        engineState = true;
        System.out.print("The engine is now on.");

    }
    } //put one here

void showAtts() {
    System.out.print("This motorcycle is a " + color + " " + make);
    if (engineState ==true)
        System.out.print("The engine is on.");
    else System.out.print("The engine is off.");

}
}
// }  remove this 

It is in correct format without error try this one..

public class Motorcycle {

public static void main(String[] args) {
    Motorcycle s=new Motorcycle();
    s.showAtts();
    s.startEngine();
}

//Three instance variables - make and color are strings. while a boolean refers to TRUE OR FLASE(in this case off or on)
String make;
String color;
boolean engineState;

void startEngine() {
    if (engineState == true)
        System.out.println("The engine is already on.");
    else {
        engineState = true;
        System.out.println("The engine is now on.");

    }
}
void showAtts() {
    System.out.print("This motorcycle is a " + color + " " + make);
    if (engineState ==true)
        System.out.println("The engine is on.");
    else System.out.println("The engine is off.");

}

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM