2014-10-18 28 views
1

我學習Java和我有一個問題:java如果+字符串不共同努力

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 
import java.io.PrintWriter; 
import java.util.*; 


public class edytor{ 
    public static void main(String[] args) throws FileNotFoundException 
    { 
    Scanner czynowy = new Scanner(System.in); 

    System.out.println("Do you wanna editing existing file?"); 
    String tn = czynowy.nextLine() ; 
    if(tn=="t") 
{System.out.println("bleble"); } 
    Scanner odpowiedz = new Scanner(System.in); 

    System.out.println("Type file name"); 
    String polozenie = odpowiedz.nextLine() ; 
     System.out.println("################################"); 
     PrintWriter zapis = new PrintWriter(polozenie); 
    Scanner tekst = new Scanner(System.in); 
    String tekst1 = tekst.nextLine() ; 
     zapis.println(tekst1); 
     zapis.close(); 

    } 
} 

它的編制,但 當串TN我T類型char:這種不打印「bleble」。我應該怎麼做才能使它工作? 問候!

回答

3
if (tn.equals("t") {...} 

字符串是一個對象,如果你創建兩個字符串,即使他們有相同的價值,他們將不等於海誓山盟

string1 == string2 // false 

==檢查對象的身份。而String中的.equals()方法檢查值。

這樣做的另一種方法是使用for循環遍歷每個字符串中的每個char,並檢查它是否與另一個字符串中具有相同位置的字符匹配。

或在您的情況下,這樣做:

if (tn.getBytes()[0] == 't') {...} 
+0

非常感謝! :DDD – Zielpak 2014-10-18 20:51:44

+0

@Zielpak非常歡迎:) – Victor2748 2014-10-18 20:53:02

3

您需要使用

if (tn.equalsIgnoreCase("t") { 
    ... 
} 

的原因,你不能用==比較兩個字符串是因爲字符串是對象。當您嘗試直接比較兩個對象時,您正在比較它們在內存中的位置。因此,即使兩個字符串的內容可能相等,它們的存儲位置也不會相同。