数组和Java字符串错误:[Ljava.lang.string;@19c42c4b
我创建了一个程序,允许用户输入日记账分录(最多7天),然后允许用户在输入分录后的某一天调用。不幸的是,这给我留下了一些我不熟悉的奇怪字符串错误 代码如下:数组和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[
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);
}
System.out.println(events);
到
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