我正在学习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"。我该怎么做才能让它发挥作用? 问候!
答案 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") {
...
}
您无法将两个字符串与==
进行比较的原因是因为字符串是对象。当您尝试直接比较两个对象时,您将比较它们在内存中的位置。因此,即使两个字符串的内容可能相等,它们的内存位置也不相等。