2013-03-23 2 views
-4

У меня возникают проблемы с инструкцией if, даже если файл kernel.txt имеет только слово abazure, программа не вводит оператор if. Программа просто передает оператор if и снова выводит слово abazure.(JAVA) if statement

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 строки Comparision" или просто использовать word.equals ("abazure"); – piotrpo

ответ

5

== в случае объектов в целом просто проверяет, если две опорные переменные ссылаются на один и тот же объект. использовать Equals() метод checkfor Струнные РАВЕНСТВО

if(word=="abazure") 

должен быть

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

попробовать

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

String#equals()

Сравнивает эту строку с указанным объектом. Результат верен, если и только если аргумент не является нулевым и является объектом String, который представляет ту же последовательность символов, что и этот объект.

1

Оператор, ==, проверяет, ссылаются ли две ссылочные переменные объекта на один и тот же экземпляр объекта.

Метод, .equals(), проверяет, эквивалентны ли эти два объекта друг другу, но они не обязательно должны быть одним и тем же экземпляром одного и того же объекта.

Таким образом, вы должны использовать что-то вроде следует за youe проверки равенства:

if("abazure".equals(word))