当前位置: 首页 > 知识库问答 >
问题:

(Java)我不能循环访问我的arraylist对象?

左丘宜年
2023-03-14
package com.company;

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

public class Main {

    public static void main(String[] args) {
    // write your code here

        Scanner scan = new Scanner(System.in);

        ArrayList<Item> itemList = new ArrayList<>();
        Item item;
        while(true) {
            System.out.println("Name plz?");
            String name = scan.nextLine();
            if (name.isEmpty()) {
                break;
            }

            System.out.println("Education plz?");
            String education = scan.nextLine();
            if (education.isEmpty()) {
                break;
            }

            item = new Item(name, education);
            if (!itemList.contains(item)) {
                itemList.add(item);
            }

        }

        System.out.println("Name & Education: ");
        for(Item detail : itemList) {
            System.out.println(detail);
        }

    }
}

和主类

package com.company;

public class Item {
    String name;
    String education;

    public Item(String name, String education) {
        this.name = name;
        this.education = education;
    }
}

共有1个答案

公良光熙
2023-03-14

在for循环中,您正在打印detail对象。

for(Item detail : itemList) {
    System.out.println(detail);
}

// prints
com.company.Item@69d9c55

第一部分是包名(认为是文件夹),@后面的随机数是一个对象引用。所以基本上是一个id,用于程序在内存对象中标识创建的对象。

有两种方法可以解决此问题:

public class Item {
    String name;
    String education;

    public Item(String name, String education) {
        this.name = name;
        this.education = education;
    }

    public String getName() {
        return name;
    }

    public String getEducation() {
        return education;
    }
}

// Then in your loop fetch the values
for(Item detail : itemList) {
    System.out.println(detail.getName());
    System.out.println(detail.getEducation());
}
public class Item {
    String name;
    String education;

    public Item(String name, String education) {
        this.name = name;
        this.education = education;
    }

    @Override
    public String toString() {
        return name + ", " + education;
    }
}
 类似资料:
  • 我这样声明了'car'对象: 当我运行该程序时,这段代码给我一个错误,它说“无法分配字段”color“,因为”car[i]“为空”: (“color”属性位于类“vehicles”中)

  • 我的方向是编写一个代码(在java中),找到1,000到9,999(任何4位数字)之间的代码,满足四个条件: 这四个数字都不一样 千位数字是十位数字的3倍 这个数字是奇数 数字之和是27 这就是我目前所拥有的。我的部分出现错误: 是出现的错误。 在我的脑海里,

  • 我的代码不能工作,我在第二个循环附近得到了java.lang.NumberFormatException:输入字符串:“FromNodeSend”: 我的代码出了什么问题?

  • 我从课本上抄了一个例子,但它拒绝编译。我是不是在什么地方打错了?出于某种原因,在客户端代码中,collections.sort(words)不允许程序编译。任何帮助都很感激。代码复制自Stuart Reges和Marty Stepp的“构建Java程序”第二版。我正试图通过复制来理解它。 该程序应该将一个CalendarDate对象装入一个ArrayList中。通过实现CalendarDate的可

  • ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 为什么会这样?因为我指定了在不满足任何条件的情况下分配给列的值。