我正在尝试从文本文件中读取一些输入,并且似乎得到了一些奇怪的结果。我有一个文本文件(我确保没有额外的空格):
acdec
我在文本文件中读取字符串,然后将其转换为数组。然后我比较两个具有相同值的数组的第一个元素,并且应该执行if语句但是它执行else。 这是代码:
import java.io.*;
import java.util.*;
public class test {
public static void main(String[] args) {
try {
Scanner sc = new Scanner(new FileReader("tester.txt"));
String one = sc.next();
String a[] = one.split("");
String[] b = { "a", "c", "d", "e", "c" };
if (a[0] == b[0]) {
System.out.println("Same");
} else {
System.out.println("Not Same");
}
sc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:4)
对于字符串比较的区别,您必须使用以下内容:
if (a[0].equals(b[0]) {
....
}
当您使用==
时,您正在比较值指向的引用,而.equals()
正在比较实际的值。< / p>
答案 1 :(得分:2)
也许你需要处理字符数组而不是字符串数组来实现你的测试结果。请注意,字符用单引号表示,而不是双引号。
public class test {
public static void main(String[] args) {
try {
Scanner sc = new Scanner(new FileReader("/Users/908752/tester.txt"));
String one = sc.next();
char a[] = one.toCharArray();
char[] b = { 'a', 'c', 'd', 'e', 'c' };
if (a[0] == b[0]) {
System.out.println("Same");
} else {
System.out.println("Not Same");
}
sc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}