数组和Java字符串错误:[Ljava.lang.string;@19c42c4b

数组和Java字符串错误:[Ljava.lang.string;@19c42c4b,java,arrays,string,Java,Arrays,String,我创建了一个程序,允许用户输入日记账分录(最多7天),然后允许用户在输入分录后的某一天调用。不幸的是,这给我留下了一些我不熟悉的奇怪字符串错误 代码如下: public class eDiary{ public static void main (String args[]){ int[] days = new int[7];//get our days days[0] = 1;//start with 1 and not 0 days[1] = 2; days[

我创建了一个程序,允许用户输入日记账分录(最多7天),然后允许用户在输入分录后的某一天调用。不幸的是,这给我留下了一些我不熟悉的奇怪字符串错误

代码如下:

public class eDiary{
public static void main (String args[]){
    int[] days = new int[7];//get our days
    days[0] = 1;//start with 1 and not 0
    days[1] = 2;
    days[2] = 3;
    days[3] = 4;
    days[4] = 5;
    days[5] = 6;
    days[6] = 7;
    String [] events = new String[7];//events for the days
    int i = 0;

    //asks for input and counts
   for(i=0; i<7; i++){
    String event = Console.readString("Tell me the major event of day " + days[i] + "\n");
    events[i] = event; 

}

 int journal_entry = Console.readInt("Enter what day you want to hear or Enter 0 to stop \n");
 while (journal_entry != 0) { 
     System.out.println(events);
     journal_entry = Console.readInt("Enter what day you want to hear or Enter 0 to stop \n");   
    //get r dun!
大家好

非常感谢您的快速回复。现在它似乎正在做的一件事就是更换

System.out.println(events);

现在给我这样的输入:

Tell me the major event of day 1 
first day
Tell me the major event of day 2
second day
Tell me the major event of day 3
third day
Tell me the major event of day 4
fourth day
Tell me the major event of day 5
fifth day
Tell me the major event of day 6
sixth day
Tell me the major event of day 7
seventh day
Enter what day you want to hear or Enter 0 to stop 
1//the day im asking for
second day//spitting out the next day's entry instead of the first day's entry
Enter what day you want to hear or Enter 0 to stop 
0//this is me stopping it
这不是一个错误

System.out.println(events);
在这一行中,您试图打印数组,但是该语句不打印数组内容,它只打印对象类名后跟其哈希代码

要打印数组内容,必须使用

System.out.println(Arrays.toString(events));
或者,如果需要,在数组中循环并打印其值,这不是错误

System.out.println(events);
在这一行中,您试图打印数组,但是该语句不打印数组内容,它只打印对象类名后跟其哈希代码

要打印数组内容,必须使用

System.out.println(Arrays.toString(events));

或者,如果需要,在数组中循环并打印其值

没有错误,这不是错误消息

相反,它是数组的字符串表示形式。请考虑这行:

System.out.println(events);
您正在打印整个数组,因此您得到了该表示形式--这确实有点难看。您只想打印一个元素,即与所选日期相对应的元素。请使用:

System.out.println(events[journal_entry]);

并执行绑定检查。

没有错误,这不是错误消息

相反,它是数组的字符串表示形式。请考虑这行:

System.out.println(events);
您正在打印整个数组,因此您得到了该表示形式--这确实有点难看。您只想打印一个元素,即与所选日期相对应的元素。请使用:

System.out.println(events[journal_entry]);

并执行绑定检查。

当您显式或隐式调用
Object.toString()
并且目标对象的类不重写
toString()
时,就会得到
[Ljava.lang.String;@10181f5b
内容。在这种情况下,问题是Java数组类型不重写
toString()

如果要输出数组,请使用
java.util.Arrays.toString(…)
将其转换为字符串,然后输出该字符串

但是在这种情况下,您实际上需要输出一个特定的条目,而不是整个数组

    System.out.println(events);


对于记录,上面的内容由类内部名称(“[Ljava.lang.String;”)和对象的标识哈希代码(十六进制)组成


这不是一个“奇怪的错误字符串”。
[Ljava.lang.string;@10181f5b
东西是当您显式或隐式调用
Object.toString()
并且目标对象的类不重写
toString()
时得到的。在这种情况下,问题是Java数组类型不重写
toString()

如果要输出数组,请使用
java.util.Arrays.toString(…)
将其转换为字符串,然后输出该字符串

但是在这种情况下,您实际上需要输出一个特定的条目,而不是整个数组

    System.out.println(events);


对于记录,上面的内容由类内部名称(“[Ljava.lang.String;”)和对象的标识哈希代码(十六进制)组成


这不是一个“奇怪的错误字符串”。

这不是一个错误。您要打印变量事件的值。
[Ljava.lang.string;@10181f5b
表示事件是一个java.lang.string类型的数组,而10181f5b是该变量的哈希代码。您要打印的ln是事件[i]其中i是一天的数字。

这不是错误。您要打印变量事件的值。
[Ljava.lang.String;@10181f5b
表示事件是java.lang.String类型的数组,10181f5b是此变量的哈希代码。您要打印的ln是事件[i]其中i是一天的数字。

您得到的输出是因为:

在Java中,每个对象都有方法,默认情况下显示类名表示,然后添加
@
和hashcode

您应该使用,它是实现的:

这将帮助您更好地理解数组

当然,您可以手动循环阵列并打印它:

for(String event: events) {
    System.out.println(event);
}

您得到的输出是因为:

在Java中,每个对象都有方法,默认情况下显示类名表示,然后添加
@
和hashcode

您应该使用,它是实现的:

这将帮助您更好地理解数组

当然,您可以手动循环阵列并打印它:

for(String event: events) {
    System.out.println(event);
}

数组中的p>被视为对象。您正在打印不是您想要的事件数组对象。

您需要打印一周内当天的名称。您需要替换

 System.out.println(events);


数组中的p>被视为对象。您正在打印不是您想要的事件数组对象。

您需要打印一周内当天的名称。您需要替换

 System.out.println(events);


它无法正确打印答案,因为您只是将System.out.println()指向事件,而事件应该是数组指针,而不是实际变量。您应该将此行替换为

System.out.println(events[journal_entry]);

为了让它有意义,请使用conmmand运行它,看看它是否能正常运行。

它无法正确打印答案,因为您只是将System.out.println()指向了应该是数组指针而不是实际变量的事件。您应该将此行替换为

System.out.println(events[journal_entry]);

让它有意义。用命令运行它,看看它是否能正常运行。

感谢所有的回复!我能够解决问题。如果有人好奇,下面是代码:

public static void main (String args[]){
int[] days = new int[7];//get our days
days[0] = 1;//start with 1 and not 0
days[1] = 2;
days[2] = 3;
days[3] = 4;
days[4] = 5;
days[5] = 6;
days[6] = 7;
String [] events = new String[7];//events for the days
int i = 0;

//asks for input and counts


for(i=0; i<7; i++){
String event = Console.readString("Tell me the major event of day " + days[i] + "\n");
events[i] = event; 
publicstaticvoidmain(字符串参数[]){
int[]天=新的int[7];//享受我们的日子
天数[0]=1;//从1开始,而不是从0开始
天数[1]=2天;
天[2