【问题标题】:Add Element to ArrayList将元素添加到 ArrayList
【发布时间】:2025-11-24 04:05:02
【问题描述】:

我对编码很陌生。我有一种方法“einkaufen”,要求用户选择产品。对于每个选择,都有一个开关盒询问他是否想购买该产品。如果用户输入“ja”,我想将商品的价格添加到我一开始创建的 ArrayList“einkaufsliste”中。

但是 Eclipse 给了我一个错误,上面写着“einkaufsliste 无法解决”。

我该如何解决这个问题?

//List with prices:
double [] waren = new double[5];
        waren[0] = 0.00;
        waren[1] = 2.49;
        waren[2] = 2.79;
        waren[3] = 0.79;
        waren[4] = 2.99;

//List to add to:
ArrayList<Double>einkaufsliste = new ArrayList<Double>();
        einkaufsliste.add(0.00);   **//right here i can eaysily add a value to the list**

//Method:
public static void einkaufen(double waren[]) {

        int n;
        String kaufen = "ja", x;
        boolean wareKaufen = true, wareNichtKaufen = false;

        System.out.println("Welche der angebotenen Waren möchtest du kaufen?");
        System.out.println("Angebot: \t1: Kinderriegel");
        System.out.println("Angebot: \t2: Nutella");
        System.out.println("Angebot: \t3: Wasser");
        System.out.println("Angebot: \t4: CDs");

        Scanner nutzerWare = new Scanner(System.in);
        n = nutzerWare.nextInt();

        switch (n) {
        case 1:
            System.out.println("Deine Auswahl: Kinderriegel \tPreis: " + waren[n] + "\nMöchtst du diese Ware zu deinem Einkaufswagen hinzufügen?");
            Scanner kinderriegelKaufen = new Scanner(System.in);
            x = kinderriegelKaufen.nextLine();
            if(x.equals(kaufen)) {
                wareKaufen=true;
                System.out.println(wareKaufen);             
                einkaufsliste.add(waren[n]);    **//ERROR right here I want to add the Item to the List but it´s not working**
                } else {
                    wareKaufen = false;
                    System.out.println(wareNichtKaufen);    
                }
            break;

【问题讨论】:

  • einkaufen 方法是静态的,如果没有对其声明类的引用或直接引用它,它就无法访问 einkaufsliste(首选后者,就像您为waren 参数)。
  • @fluffy 我不确定我为waren 和@Matteo 做了什么不同,如果我添加静态,它会说“非法修饰符,只允许使用 final”..
  • @Matteo 不幸的是仍然无法与static final 合作。如果我只放final,没有static,那很好,但问题又是我不能在我的方法中使用它。

标签: java arrays arraylist methods add


【解决方案1】:

这对我有用。

顺便说一句。您可以将 switch 语句更改为简单的 if 声明,因为您只有 1 个给定的案例,因此实际上不需要执行 switch case

像这样:

        if (n == 1) {
        System.out.println("Deine Auswahl: Kinderriegel \tPreis: " + waren[n] + "\nMöchtst du diese Ware zu deinem Einkaufswagen hinzufügen?");
        Scanner kinderriegelKaufen = new Scanner(System.in);
        x = kinderriegelKaufen.nextLine();
        if (x.equals(kaufen)) {
            wareKaufen = true;
            System.out.println(wareKaufen);
            einkaufsliste.add(waren[n]);
        } else {
            wareKaufen = false;
            System.out.println(wareNichtKaufen);
        }
    }

带有switch的完整代码在这里:

package com.company;

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

  public static void main(String[] args) {


    double[] waren = new double[5];
    waren[0] = 0.00;
    waren[1] = 2.49;
    waren[2] = 2.79;
    waren[3] = 0.79;
    waren[4] = 2.99;


    einkaufen(waren);


}


//Method:
public static void einkaufen(double waren[]) {

    ArrayList<Double> einkaufsliste = new ArrayList<Double>();
    einkaufsliste.add(0.00);

    int n;
    String kaufen = "ja", x;
    boolean wareKaufen = true, wareNichtKaufen = false;

    System.out.println("Welche der angebotenen Waren möchtest du kaufen?");
    System.out.println("Angebot: \t1: Kinderriegel");
    System.out.println("Angebot: \t2: Nutella");
    System.out.println("Angebot: \t3: Wasser");
    System.out.println("Angebot: \t4: CDs");

    Scanner nutzerWare = new Scanner(System.in);
    n = nutzerWare.nextInt();

    switch (n) {
        case 1:
            System.out.println("Deine Auswahl: Kinderriegel \tPreis: " + waren[n] + "\nMöchtst du diese Ware zu deinem Einkaufswagen hinzufügen?");
            Scanner kinderriegelKaufen = new Scanner(System.in);
            x = kinderriegelKaufen.nextLine();
            if (x.equals(kaufen)) {
                wareKaufen = true;
                System.out.println(wareKaufen);
                einkaufsliste.add(waren[n]);
            } else {
                wareKaufen = false;
                System.out.println(wareNichtKaufen);
            }
            break;
      }
  }

}

【讨论】:

  • 感谢您的回答!我之前用if 尝试过,但很挣扎,这就是我使用switch 的原因。可能会替换它:)
  • Gern geschehen :)
【解决方案2】:

由于问题与static 有关,我不能简单地在我的ArrayList 前面添加static,我只是从主方法中删除了列表并在任何方法之外创建它。不确定这是否是正确的方法,但现在它有效。感谢您的帮助!

【讨论】: