如何在Java中向另一个类的数组中添加数据?

如何在Java中向另一个类的数组中添加数据?,java,arrays,class,Java,Arrays,Class,[编辑:我已经解决了这个问题。我只需要将阵列设置为静态。我不敢相信我没有这样做。谢谢大家的帮助!] 我有一个书店计划,人们最多可以买5本不同的书。一旦他们选择了一个标题,它将在以后添加到发票的数组中。选择标题并将其放入数组是在两个不同的类中进行的。为了试用,我买了两本书:田径和汽车运动 预期产出: You bought 2 book(s)! 1) Athletics Weekly Magazine 2) Autosport Magazine java:这两种方法我都试过了。首先是更改为i-1

[编辑:我已经解决了这个问题。我只需要将阵列设置为静态。我不敢相信我没有这样做。谢谢大家的帮助!]

我有一个书店计划,人们最多可以买5本不同的书。一旦他们选择了一个标题,它将在以后添加到发票的数组中。选择标题并将其放入数组是在两个不同的类中进行的。为了试用,我买了两本书:田径和汽车运动

预期产出:

You bought 2 book(s)!
1) Athletics Weekly Magazine
2) Autosport Magazine
java:这两种方法我都试过了。首先是更改为
i-1

在SportsMag.java中:

import java.util.Scanner;

public class SportMag extends Magazine{

    Scanner scan = new Scanner(System.in);

    public void title() {
        System.out.println("");
        System.out.println("What do you want to buy?");
        System.out.println("1. Athletics Weekly");
        System.out.println("2. Autosport");
        int choice = scan.nextInt();

        List l = new List();

        if (choice==1) {
            l.totalbooks(1);
            l.booknames(1,"Athletics Weekly", "Magazine");  
        } else {
            l.totalbooks(1);
            l.booknames(1,"Autosport", "Magazine"); 
        }

        System.out.println("Do you want to go back to menu? (Yes/No)");
        String back = scan.next();

        if (back.equalsIgnoreCase("Yes")) {
            BookType b = new BookType();
            b.bookMenu();
        }

        if (back.equalsIgnoreCase("No")) {
            l.printInvoice();
        }

    }
}
在List.java中(我在其中打印发票):

我还尝试使用
ArrayList

在SportMag.Java中:

//same as above, only a little difference here
        List l = new List();

        if (choice==1) {
            l.totalbooks(1);
            bookname.add("Athletics Weekly");   
        } else {
            l.totalbooks(1);
            bookname.add("Autosport");  
        }
在List.java中:

ArrayList<String> bookname = new ArrayList<String>();

public void printInvoice() {
        System.out.println("You bought "+total+" book(s).");
        for (int i=0; i<total; i+=1) {
            System.out.println(bookname.get(i));
        }
    }

如何将图书名称输入数组并正确显示?

我认为您在变量
列表l的范围方面遇到了问题。您在函数
title
中创建此变量,然后使用它,将客户请求的产品插入其中。但是,变量从哪里来?它只是在函数结束时消失。这个对象应该在一个范围内,只要它是有趣的,它就会存在


例如,您可以将此变量转换为主类的属性。它甚至可以是一个静态类。您应该找到更好的方法来保存
列表
对象。事实上,只要
title
函数结束,它就会消失。

用户数组列表而不是array@NishanthMathaOP显然是一个Java初学者。很简单,牛仔。@NishanthMatha我试图声明
ArrayList bookname=new ArrayList()但我不能使用
bookname.add(“Autosport”)在另一个类中。它将给出一个无法解决的错误
bookname
。当我尝试使用特定的方法添加名称时,仍然会出现相同的错误。请使用您尝试过的方法更新问题。抱歉,请稍后回复。我已经更新了问题。哦,对不起,我刚开始用的是
total
,但忘了更改它。我已将其更改为
I-1
,现在输出为
1)Autosport(杂志)2)null(null)
您应该编辑您的问题,因为此错误不是问题的一部分。我将编辑我的答案。
//same as above, only a little difference here
        List l = new List();

        if (choice==1) {
            l.totalbooks(1);
            bookname.add("Athletics Weekly");   
        } else {
            l.totalbooks(1);
            bookname.add("Autosport");  
        }
ArrayList<String> bookname = new ArrayList<String>();

public void printInvoice() {
        System.out.println("You bought "+total+" book(s).");
        for (int i=0; i<total; i+=1) {
            System.out.println(bookname.get(i));
        }
    }
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        BookType b = new BookType();
        List l = new List();

        b.bookMenu();
        int booktypechoice = scan.nextInt();

        if (booktypechoice ==1) {
            Magazine mag = new Magazine();
            mag.magtype();
            int magtypechoice = scan.nextInt();

            if (magtypechoice==1) {
                SportMag smag = new SportMag();
                smag.title();
                int smagchoice = scan.nextInt();
                SportMag sportmag = new SportMag();

                if (smagchoice==1) {
                    l.totalbooks(1);
                    l.booknames("Athletics Weekly", "Magazine");
                    System.out.println("Do you want to go back to menu? (Yes/No)");
                    String goback = scan.next();

                    if (goback.equalsIgnoreCase("Yes")) {
                        b.bookMenu();
                    }
                    if (goback.equalsIgnoreCase("No")) {
                        l.printInvoice();
                    }
                } else {
                    l.totalbooks(1);
                    l.booknames("Autosport", "Magazine");
                    System.out.println("Do you want to go back to menu? (Yes/No)");
                    String goback = scan.next();

                    if (goback.equalsIgnoreCase("Yes")) {
                        b.bookMenu();
                    }
                    if (goback.equalsIgnoreCase("No")) {
                        l.printInvoice();
                    }
                }
            } else {
                //all the other book choices goes here.
                //It's really long, but it's just like sportmag up there
            }
         }
      }
   }