Java 为什么if语句永远不相等;0“;或;“1”吗?“我打印变量”;“行”;它是一个;0“;或;“1”;。但如果这句话不管用。

Java 为什么if语句永远不相等;0“;或;“1”吗?“我打印变量”;“行”;它是一个;0“;或;“1”;。但如果这句话不管用。,java,if-statement,Java,If Statement,这是文本文件的硬编码读取 /** * @(#)StringToFile.java * * * @author * @version 1.00 2016/2/14 */ package StringToFile; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Lis

这是文本文件的硬编码读取

/**
 * @(#)StringToFile.java
 *
 *
 * @author 
 * @version 1.00 2016/2/14
 */
package StringToFile;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;


public class StringToFile {

public static void main(String[] args) throws IOException {

 read("0");
}

public static String read(String msg2) throws IOException {
现在,我打印出文本文件的内容。这部分是有效的

msg2 = line; //  I assign msg2 what was read from file.
现在我检查文本文件中是否有一个“1”,但这永远不起作用

System.out.println("line read:" + line); // I print out line
if (msg2==("1")) {
    System.out.println("check read: " + msg2);  // check to see what we read. But this never works.

        }
现在我检查文本文件中是否有“0”,但它永远不会工作

System.out.println("line read:" + line); // I print out line
if (msg2==("1")) {
    System.out.println("check read: " + msg2);  // check to see what we read. But this never works.

        }

如果需要比较对象,请始终使用方法
.equals()
,而不是运算符
=

使用操作符
==
测试相同的对象(内存中的相同位置),而不是方法
.equals()
检查相同的内容

所以不是

if (msg2==("0")) {
System.out.println("check read: " + msg2); // check to see what we read. 



        }

}  

return(msg2);
}

}
你的代码应该是

if (msg2==("1")) {

我尝试了if(msg2.equals(“1”)),但仍然不起作用。一定是出了什么问题。请检查字符串的长度。也许有空白。是的,大卫,你是对的。文本文件正在由另一个程序编写,它会留下一些空间。我不知道为什么。Java中有没有办法只读取文本文件的第一个字符?您可以读取它并使用trim()函数删除字符串开头和结尾的空格。我使用了msg2.trim(),但IF语句似乎不起作用。我想mabie我需要从文本文件中读取1个字符。这就是我真正需要的。不确定使用什么方法。实际上不是重复的,因为问题不在于使用等于或==比较字符串,而在于字符串的隐藏内容。