如何修复java:1:错误:'{'预期

时间:2018-01-09 17:12:40

标签: java class

我正在尝试用Java编译一个简单的类,但无法解决错误的含义。我是Java的新手。

错误是:

Book.java:1: error: '{' expected
public class Book(String bookName)
                 ^ 

public class Book(String bookName)
{

    private String name;
    private String price;

    public Book() 
    {
        name = bookName;
        Random r = new Random();
        int lowPrice = 10;
        int highPrice = 100;
        price = r.nextInt(highPrice - lowPrice) + lowPrice;
    }
}

5 个答案:

答案 0 :(得分:5)

你的课被错误地宣布了。您需要从类构造函数的声明中删除class声明符。

java中不允许使用您的类声明public class Book(String bookName)。您需要将其更改为public class Book

Random#nextInt(...)不返回String,返回int。将String price更改为int price

试试这个:

public class Book {

    private String name;
    private int price;

    public Book(String bookName) {
        name = bookName;
        Random r = new Random();
        int lowPrice = 10;
        int highPrice = 100;
        price = r.nextInt(highPrice - lowPrice) + lowPrice;
    }
}

答案 1 :(得分:3)

这个

public class Book(String bookName)
{

应该是

public class Book
{

或者你必须创建一个单独的参数化构造函数

public class Book
{

    private String name;
    private String price;
    public Book(String bookName){
        //.. code
        name = bookName;
    }

    public Book() 
    {
        //name = bookName;
        Random r = new Random();
        int lowPrice = 10;
        int highPrice = 100;
        price = r.nextInt(highPrice - lowPrice) + lowPrice;
    }
}

答案 2 :(得分:2)

这个班级声明:

public class Book(String bookName)

Java中不允许这样做。

也许你的意思是创建一个像这样的构造函数:

public class Book {

    //...

    public Book(String bookName) {
        this.name = bookName;
    }

    //...
}

其他问题

  • Random::nextInt返回int而不是String,因此声明 private String price;应为private int price;
  • 您也可以使用getter和setter

最后我假设您的代码应如下所示:

public class Book {

    private @Getter @Setter String name;
    private @Getter @Setter int price;

    public Book(String bookName) {
        this.name = bookName;
    }

    public Book() {
        Random r = new Random();
        int lowPrice = 10;
        int highPrice = 100;
        price = r.nextInt(highPrice - lowPrice) + lowPrice;
    }

}

看看这个:

答案 3 :(得分:1)

更改了类声明并添加了Main方法

public class Book {

    private String name;
    private String price;

    public Book(String bookName) 
    {
        this.name = bookName;
        Random r = new Random();
        int lowPrice = 10;
        int highPrice = 100;
        this.price = r.nextInt(highPrice - lowPrice) + lowPrice;
    }

  public void printBookDetails(){
  System.out.println("The book "+this.name + "is for "+ this.price +"dollars");
  }

  public static void main(String [] args){
          Book book =new Book("MyBook");
          book.printBookDetails();

  }

}

答案 4 :(得分:0)

公共课书{

private String name;


 Book(String bookName) 
 {
   this.name = bookName;
}
  public static void main(String[] args){
    int price;
    int lowPrice = 10;
    int highPrice = 100;
    price =(highPrice - lowPrice) + lowPrice;
        System.out.println(price);
}

}