2013-03-23 36 views
-4

即使当文件explicit.txt只包含单词abazure程序不会输入if语句时,我也遇到了if语句的问题。该程序只是通过if语句并再次输出abazure一词。(JAVA)if语句

import java.util.Scanner; 
import java.io.File; 
import java.io.PrintWriter; 
import java.io.FileNotFoundException; 
public class Manzai { 

    public static void main(String[] args) { 
    String word; 
    Scanner input = null; 
    PrintWriter output = null; 

    try 
    { 
     input = new Scanner(new File("explicit.txt")); 
     output = new PrintWriter(new File("censored.txt")); 
    } 
    catch(FileNotFoundException e) 
    { 

     System.out.println("File explicit.txt was not found"); 
     System.exit(0); 
    } 

    while(input.hasNext()) 
    { 
     word = input.next(); 

     if(word=="abazure") 
     { 
      word = "a******"; 
     } 

     output.print(word + " "); 
    } 
    input.close(); 
    output.close(); 
} 
} 
+0

googlyfy的 “java字符串比较” 或只是使用word.equals( “abazure”); – piotrpo

回答

5

==万一对象一般只检查两个引用变量是否引用同一个对象。使用equals()方法来checkfor串平等

if(word=="abazure") 

应该

if("abazure".equals(word)) 
1

尝试

if(word.equals("abazure")){ 
    // do something 
} 

String#equals()

比较此字符串与指定的对象。如果 且仅当参数不为null并且是一个字符串对象 表示与此对象相同的字符序列,则结果为true。

1

运算符==测试以查看两个对象引用变量是否引用完全相同的对象实例。

方法.equals()测试以查看两个对象是否相互比较 - 但它们不需要是同一个对象的完全相同的实例。

所以,你应该用的东西YOUE平等的检查就像如下:

if("abazure".equals(word))