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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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_Oop_Object_Arraylist - Fatal编程技术网

Java ArrayList的奇怪输出

Java ArrayList的奇怪输出,java,oop,object,arraylist,Java,Oop,Object,Arraylist,我是Java新手,我对ArrayList中的对象有问题 我试图将一个带有文本和时间戳的对象放在ArrayList中。 在开始时,它的行为正常,因此您可以在中键入注释,如果您键入“退出”,它将关闭输入并显示ArrayList中的所有条目。 但如果我输入“exit”,它只会显示以下输出: Notizblock@4c15c0d7 这是我的代码: import java.util.Date; import java.text.DateFormat; import java.text.SimpleDate

我是Java新手,我对ArrayList中的对象有问题

我试图将一个带有文本和时间戳的对象放在ArrayList中。 在开始时,它的行为正常,因此您可以在中键入注释,如果您键入“退出”,它将关闭输入并显示ArrayList中的所有条目。 但如果我输入“exit”,它只会显示以下输出:

Notizblock@4c15c0d7

这是我的代码:

import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Scanner;
import java.util.ArrayList;


class Notizblock {

//heutiges Datum erzeugen
private static String getDateTime() {
    DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyy HH:mm:ss");
    Date datum = new Date();
    return dateFormat.format(datum);
}

private String text;
private String datum;

//Konstruktor
public Notizblock(String text, String datum){
    this.text = text;
    this.datum = datum;
}

public void print() {
    System.out.println("Datum: "+datum+" Text: "+text);
}

public static void main(String[] args) {
    ArrayList<Notizblock> notizen = new ArrayList<Notizblock>();
    Scanner eingabe = new Scanner(System.in);

    while (true) {
        System.out.println("Notiz eingeben:");
        String a = eingabe.next();
        if (a.equals("exit")) {
            break;
        }

        notizen.add(new Notizblock(a, getDateTime()));

    }
    System.out.println("alle notizen:");
    for (Notizblock notiz :notizen ) {
        System.out.println(notiz);
    }

}
}
import java.util.Date;
导入java.text.DateFormat;
导入java.text.simpleDataFormat;
导入java.util.Scanner;
导入java.util.ArrayList;
类Notizblock{
//埃尔泽根海提格斯基准酒店
私有静态字符串getDateTime(){
DateFormat DateFormat=新的SimpleDateFormat(“dd.MM.yyy HH:MM:ss”);
日期基准=新日期();
返回日期格式。格式(基准);
}
私有字符串文本;
私有字符串数据;
//康斯特鲁克托
公共Notizblock(字符串文本、字符串基准){
this.text=文本;
这个。基准=基准;
}
公开作废印刷品(){
System.out.println(“基准:+Datum+”文本:+Text);
}
公共静态void main(字符串[]args){
ArrayList notizen=新的ArrayList();
扫描器eingabe=新扫描器(System.in);
while(true){
System.out.println(“Notiz eingeben:”);
字符串a=eingabe.next();
如果(a.等于(“退出”)){
打破
}
add(新的Notizblock(a,getDateTime());
}
System.out.println(“alle notizen:”);
for(Notizblock notiz:notizen){
系统输出打印LN(notiz);
}
}
}
如果有人能告诉我我做错了什么,我很高兴,我愿意对我的代码进行每一次改进。
如果你需要更多的信息,请打电话给我

谢谢


另外,我是德国人,很抱歉我的英语不好;)

您需要重写
toString
方法。
Notizblock
是一个自定义类,默认的
System.out
将是
classname@hashcode
,即您所看到的对象

覆盖
toString
后,它将根据
toString
实现打印对象的内容。以下是一个示例:

@Override
public String toString() {
  return "Notizblock {" +
      "text='" + text + '\'' +
      ", datum='" + datum + '\'' +
      '}';
}

是。您可以调用已定义的现有打印方法

System.out.println("alle notizen:");
for (Notizblock notiz :notizen ) {
    System.out.println(notiz.print());
}

打印(SOUT)任何内容时,都会自动调用
toString()
。这就是为什么重写
toString()
将是一种更好的方法,而不是提供一个自定义方法来完成同样的工作,除非您正在对数据进行一些额外的/特殊的格式化。

我认为在您的打印中有一个小问题:既然您已经提供了print()方法,就利用它=)只需更改
System.out.println(notiz)带有
notiz.print()请检查答案,我已经包含了完整的信息。感谢您的快速回答,现在笔记显示正确:)