Java if + String不能一起工作

时间:2014-10-18 20:48:39

标签: 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"。我该怎么做才能让它发挥作用? 问候!

2 个答案:

答案 0 :(得分:3)

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

String是一个对象,如果你创建了两个字符串,即使它们具有相同的值,它们也不会相等于

string1 == string2 // false

==检查对象标识。而String中的.equals()方法检查值。

另一种方法是使用for循环遍历每个字符串中的每个char,并检查它是否与另一个字符串中相同位置的字符匹配。

或者在您的情况下,执行此操作:

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

答案 1 :(得分:3)

您需要使用

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

您无法将两个字符串与==进行比较的原因是因为字符串是对象。当您尝试直接比较两个对象时,您将比较它们在内存中的位置。因此,即使两个字符串的内容可能相等,它们的内存位置也不相等。