2016-01-28 126 views
0

我想從文本文件中讀取一些輸入,並似乎得到一些奇怪的結果。我有了(我確信有沒有多餘的空格)的文本文件:從文本文件簡單閱讀

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

在問這樣的問題之前,請做一個簡單的Google搜索。 –

+0

如果你創建數組char char而不是數組長度爲1的字符串,你的代碼會更有意義!無論如何sparky提供了正確的修復 –

+0

執行代碼'System.out.println(b [0])'IN if語句不打印任何內容,但在if語句之前執行時,打印「a」。我只能假設if語句甚至沒有運行,所以有你的問題。 – winterfox

回答

4

用於字符串比較中的差異,你必須使用以下方法:

if (a[0].equals(b[0]) { 
    .... 
} 

當您使用==,你是比較參考其值指向.equals()正在比較實際的

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