java - 为什么方法不是静态的却说它是静态的?

标签 java arraylist static

我试图为一家理论音像店制作一个面向对象的库存系统。

我不断收到以下错误消息:

non-static variables xyz cannot be accessed from a static context.

我在静态上下文中找到的所有信息都是针对一种方法是静态的而另一种方法不是静态的情况,但是我的方法都不是静态的。

在这段代码中,我两次收到该错误消息,但我不明白为什么。

if (enterOption == 1) {
    Movie movieNew = new Movie (titleInput, yearInput, directorInput, ratingInput, genreInput);
    VideoShop.movies.add(movieNew);  
} else {
    UI.runUI();
}

我从 VideoShop.movi​​es.add(movieNew);UI.runUI(); 方法调用中获取它。

完整方法:

public void createMovie ()
{
    Scanner sc = new Scanner (System.in);

    System.out.println ("Title: ");
    String titleInput = sc.next();

    System.out.println ("Year: ");
    int yearInput = sc.nextInt();

    System.out.println ("Director: ");
    String directorInput = sc.next();

    System.out.println ("Rating [G / PG / M / MA15 / R18]: ");
    String ratingInput = sc.next();

    System.out.println ("Genre [a - Action/ b - Drama/ c - Comedy/ d - Musical/ e - Family/ f - Documentary]: ");
    String genreInput = sc.next();

    System.out.println ("Format [VCD/DVD]: ");
    String formatInput = sc.next();

    System.out.println ("Cost: ");
    double costInput = sc.nextDouble(); 

    System.out.println ("Quantity: ");
    int quantityInput = sc.nextInt();


    System.out.println("Confirm?");
    System.out.println("1. Yes 2. No, return to main menu");

    System.out.println("Enter option: ");
    int enterOption = sc.nextInt();

    if (enterOption == 1) {
        Movie movieNew = new Movie (titleInput, yearInput, directorInput, ratingInput, genreInput);
        VideoShop.movies.add(movieNew);

    } else {
        UI.runUI();
    }
}

最佳答案

VideoShop.movi​​es 可能是非静态字段。您应该创建一个对象,而不是使用 VideoShop.movi​​es:

VideoShop shop = new VideoShop();
shop.movies.add(movieNew);

UI 相同:

UI ui = new UI();
ui.runUI();

关于java - 为什么方法不是静态的却说它是静态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33343838/

相关文章:

java - 将 int 映射到 int(在 Java 中)

Java Swing : Ctrl+F1 does not work globally, 但互为组合键

java - Sonatype Nexus 持有 tar 和 war Artifact ,其 Maven 坐标未在 lucene 搜索 api 中列出

java - 无法向 ArrayList 添加元素

c++ - QT静态库静态编译

java - 比较 Java 中的日期时间 DAY hh :mm-hh:mm

java - ArrayList.add() 不添加,不返回错误

ios - 是否可以仅在使用设备而不是模拟器进行测试时使用静态库?

java - 在 Java 语言中以一种或另一种方式初始化静态变量的正确方法或根本区别是什么?

java - 使用 java Collections 获得意想不到的结果