Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将数组发送到arraylist?_Java_Arrays_Arraylist - Fatal编程技术网

Java 如何将数组发送到arraylist?

Java 如何将数组发送到arraylist?,java,arrays,arraylist,Java,Arrays,Arraylist,我在创建数组或对象(具有多个字段)并将其发送到数组列表时遇到问题。任何帮助都将不胜感激。我花了好几个小时浏览YouTube上的每一段视频,视频中都有“对象”和“数组列表”这两个词,但找不到太多帮助 程序需要提示用户选择一个选项(1.AddItem),然后提示用户输入名称和格式(dvd、vhs),并在数组列表中保存具有这些变量的多个对象。我要么将保存在内存中的位置返回给我,要么创建一个大对象而不是多个对象 库: import java.util.Scanner; import java.util.

我在创建数组或对象(具有多个字段)并将其发送到数组列表时遇到问题。任何帮助都将不胜感激。我花了好几个小时浏览YouTube上的每一段视频,视频中都有“对象”和“数组列表”这两个词,但找不到太多帮助

程序需要提示用户选择一个选项(1.AddItem),然后提示用户输入名称和格式(dvd、vhs),并在数组列表中保存具有这些变量的多个对象。我要么将保存在内存中的位置返回给我,要么创建一个大对象而不是多个对象

库:

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

public class Library {

    static ArrayList<Object> items = new ArrayList<Object>();
    static int menuOption;
    static Scanner scan = new Scanner(System.in);

    public static void main(String args[]) {
        String title, format;
        boolean right = false;

        do{
            displayMenu();
            if (menuOption == 1){
                System.out.println("Enter Title: ");
                title = scan.next();
                System.out.println("Enter format: ");
                format = scan.next();
                addNewItem(title, format);
            } else {System.out.println(items);

            }
        } while (!right);
    }

    static int displayMenu(){


        System.out.println("Menu: ");
        System.out.println("1. Add New Item");
        menuOption = scan.nextInt();

        return menuOption;
    }

    static void addNewItem(String title, String format){
        MediaItem b = new MediaItem();
        b.setTitle(title);
        b.setFormat(format);
        items.add(b);

    }
}
public class MediaItem {

    String title;
    String format;

    MediaItem(){
        title = null;
        format = null
    }
    MediaItem(String title, String format){
        title = new String();
        format = new String();
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getFormat() {
        return format;
    }
    public void setFormat(String format) {
        this.format = format;
    }
}
我要么继续将保存在内存中的位置返回给我

我猜您是在尝试使用
System.out.println()
打印
MediaItem
或尝试自动将对象转换为字符串时遇到这种情况的。无论您在查看内存地址时采取什么方法,都可能是正确的方法,您的问题只在于数据的显示

考虑:

MediaItem item = ...;
System.out.println(item);
默认情况下,当您执行类似操作时,Java不知道如何将任意对象转换为字符串,因此它只会输出类名和内存地址。您需要单独打印字段(例如,Java已经知道如何显示
字符串
),例如:

或者您可以重写
toString()
(在
对象中声明)以提供自定义字符串转换:

class MediaItem {
   ...
   @Override public String toString () {
      return "Title: " + title + " Format: " + format;
   }
}
然后您可以直接打印:

System.out.println(item);
它是
Object.toString()
的默认基本实现,用于生成包含内存地址的字符串


根据您的描述,我猜您的实现大致正常,但遇到了这个问题,并最终改变(打破)了一系列其他不相关的东西来尝试修复它。

如果您:

1-换行

static ArrayList<Object> items = new ArrayList<Object>();
System.out.println( items );

3-在行尾插入“;”

format = null

我在这里做了,它成功了。

您的代码中有哪一部分需要处理?请删除代码中不相关的部分。不清楚错误和需要什么。您的代码似乎与主题标题完全不匹配。是否要将数组转换为ArrayList?如果是,那么看看()你到底在找什么?非常感谢你的帮助!是的,我知道我很快就找到了答案,我想知道这是否与转换有关。@YellowSoloCup顺便说一句,如果您使用的是Eclipse,您可以右键单击代码,选择“源”,然后选择“Generate toString()”,Eclipse将生成一个合理的
toString()
函数,其中包括所有成员字段的值。非常方便。
System.out.println( items );
for ( MediaItem mi : items )
{
    System.out.println( mi.getTitle() + ", " + mi.getFormat() );
}
format = null