今天学的方法,做作业的时候遇到了一个问题。
为什么我把数组创建到main函数外面,就会报错呢?
public class TestBooks {
public static void main(String[] args) {
Books[] books = new Books[3];
for (int i = 0; i < books.length; i++) {
books[i] = new Books();
books[i].setId(i + 1);
}
books[0].setName("java");
books[0].setPrice(110.5);
books[0].setNumber(0);
books[1].setName("abcd");
books[1].setPrice(10.5);
books[1].setNumber(0);
books[2].setName("JDBC");
books[2].setPrice(12.5);
books[2].setNumber(0);
for (int i = 0; i < books.length; i++) {
System.out.println(books[i].getId() + "\t" + books[i].getName() +
"\t" + books[i].getPrice() + "\t" + books[i].getNumber());
}
Scanner sc = new Scanner(System.in);
System.out.println("请输入图书的编号:");
int choice = sc.nextInt();
}
public class TestBooks {
Books[] books = new Books[3];
public static void main(String[] args) {
for (int i = 0; i < books.length; i++) {
books[i] = new Books();
books[i].setId(i + 1);
}
books[0].setName("java");
books[0].setPrice(110.5);
books[0].setNumber(0);
books[1].setName("abcd");
books[1].setPrice(10.5);
books[1].setNumber(0);
books[2].setName("JDBC");
books[2].setPrice(12.5);
books[2].setNumber(0);
for (int i = 0; i < books.length; i++) {
System.out.println(books[i].getId() + "\t" + books[i].getName() +
"\t" + books[i].getPrice() + "\t" + books[i].getNumber());
}
Scanner sc = new Scanner(System.in);
System.out.println("请输入图书的编号:");
int choice = sc.nextInt();
}
你的main方法是个静态方法,如果想要引用books这个变量你需要把他也声明为静态的,也就是
static Books[] books = new Books[3];
mian方法是静态方法,声明在mian方法外变量有两种,一种是静态变量,这种可以直接使用,另外一种是成员变量,这种变量需要new对象,通过对象进行使用