从文本文件中简单阅读

时间:2016-01-28 21:08:05

标签: java io

我正在尝试从文本文件中读取一些输入,并且似乎得到了一些奇怪的结果。我有一个文本文件(我确保没有额外的空格):

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();
    }
  }
}

2 个答案:

答案 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();
    }
}
}