如何修复java:1:错误:';{&òx27;预期
我正试图用Java编译一个简单的类,但无法理解错误的含义。我对Java非常陌生 错误是:如何修复java:1:错误:';{&òx27;预期,java,class,Java,Class,我正试图用Java编译一个简单的类,但无法理解错误的含义。我对Java非常陌生 错误是: Book.java:1: error: '{' expected public class Book(String bookName) ^ 代码 本类别声明: public class Book(String bookName) Java中不允许使用。 也许您的意思是创建这样的构造函数: public class Book { //... publ
Book.java:1: error: '{' expected
public class Book(String bookName)
^
代码
本类别声明:
public class Book(String bookName)
Java中不允许使用。
也许您的意思是创建这样的构造函数:
public class Book {
//...
public Book(String bookName) {
this.name = bookName;
}
//...
}
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;
}
}
其他问题
返回一个Random::nextInt
而不是int
字符串,因此声明
应该是private String price;
private int price;
- 您也可以使用getter和setter
public class Book {
//...
public Book(String bookName) {
this.name = bookName;
}
//...
}
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;
}
}
看看这个:
- 这
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;
}
}
您的类声明错误。您需要从类构造函数的声明中删除
class
声明器
java中不允许您的类声明public类目(String bookName)
。您需要将其更改为public类目
Random#nextInt(…)
不返回字符串,而是返回整数。将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;
}
}
更改了类声明并添加了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();
}
}
公共课堂用书{
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);
}
}这是Java而不是Scala。构造函数在主体内部,而不是在声明范围内。在开始编码之前,请先看一下Java语法。谢谢。我今天读了一本这方面的书,但只是想了解一下。如果我的无知冒犯了你,我向你道歉。我是在寻求帮助。@1.1k StackOverflow声誉的elksie5000,我会我希望你熟悉一些页面,比如“向下投票”按钮上的文字——“这个问题没有显示任何研究成果(…)”。您可能会发现此页面非常有用:@zlakad,我不打算删除此问题。我猜可能还有其他人在使用新语言的第一天也面临同样的情况。默认构造函数没有参数named
bookName
@smac89构造函数重载
仍然没有bookName
可变的scope@smac89完全同意、更新和thanks@elksie5000是的,在python中这是可能的,但在java中,构造函数应该在类的主体内定义,就像没有任何返回类型的函数一样,对于某些属性,重载构造函数,如asnwerMy向您提出的问题所示:无论何时实例化新书,您都是creating new Random r.将r声明为私有静态字段不是更便宜(更优雅)吗?是的,你是对的@zlakad,在这个回答中,我只是解决了大问题:)