Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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 字符串[]数组错误_Java - Fatal编程技术网

Java 字符串[]数组错误

Java 字符串[]数组错误,java,Java,当我使用字符串[]数组时,如下所示: import java.lang.String.*; import java.text.DecimalFormat; import java.text.NumberFormat; public class JavaJoe { public static void main(String args[]) { String [] day = {"Monday", "Tuesday", "Wednesday", "Thursday", "

当我使用字符串[]数组时,如下所示:

 import java.lang.String.*; 

 import java.text.DecimalFormat; 

 import java.text.NumberFormat;

public class JavaJoe

{

public static void main(String args[]) 

{

String [] day = {"Monday", "Tuesday", "Wednesday", "Thursday", "Saturday", "Sunday"};
该系统的输出:

if(day[0] == ("Monday"))

{

double cost = 30;

double totalCost = 30 * 1.15; //cost including tax

money = money - totalCost;

System.out.println("It is " + day + " and Joe has to spend " + decimal.format(totalCost) + " on a new pair of shoes. He has " + decimal.format(money) + " left.");

} //if
给我这个:

它是[Ljava.lang.string;@1ea2dfe,乔得花34.50美元。他还剩下165.50美元


你能告诉我为什么吗?为什么它不告诉我今天是星期一?提前谢谢!

首先,使用
equals
比较字符串(即
day[0]。equals(“星期一”)


然后,打印
day[0]
而不是
day

来比较
字符串
,您必须使用
equals

if(day[0].equals("Monday"))

您正在打印
,它是一个
数组


使用
day[0]

,因为您正在打印数组本身,该数组调用Java数组的
toString
方法。如果检查此方法的实现,您将看到它不会打印实际值,而是会打印该对象的唯一哈希

Object.toString()

返回对象的字符串表示形式 toString方法返回一个字符串,该字符串“以文本形式表示”此 结果应该是一个简洁但信息丰富的表示 这对一个人来说很容易阅读。建议大家 子类重写此方法

类对象的toString方法返回一个字符串,该字符串由 对象作为实例的类的名称,at符号 字符“@”和哈希的无符号十六进制表示形式 对象的代码。换句话说,此方法返回一个等于 价值:

现在,在代码中将
day
更改为
day[0]
,并使用
equals
equalsIgnoreCase
进行字符串比较。
==
是引用等式

if(day[0].equals("Monday")) 
    System.out.println("It is " + day[0] + " and Joe has to spend " + decimal.format(totalCost) + " on a new pair of shoes. He has " + decimal.format(money) + " left.");

因为您正在打印阵列


运算符检查两个引用是否指向同一对象,而.equals()函数将检查字符串内容

String name1 = new String("John");
String name2 = new String("John");
if(name1 == name2 )
{
  System.out.println("Both point to same object");
}
else
{
   System.out.println("Both point to different object");      
}
输出为:

Both point to different object
鉴于

if(name1.equals(name2) )
{
  System.out.println("Both have same content");
}
else
{
   System.out.println("Both have different content");      
}
输出为:

Both have same content

没有错误,您正在标准输出中打印数组而不是其元素。这是对象(打印内存位置)的默认toString()打印
day[index]
而不是打印整个数组。

使用
days[0]。等于(“星期一”);


其次,不是使用
System.out.println(day);
而是使用
System.out.println(day[0])

day
是数组;您需要访问数组的一个条目。使用if(day[0].equals(“周一”))然后打印day[0]。
Both have same content