2014-10-11 14 views
-1

Моя программа должна проверить, является ли вход палиндром или нет. Данная программа компилируется и выполняется успешно. Программа корректно печатает обратную строку, но дает неправильный вывод. Пожалуйста помоги!Может кто-нибудь обнаружить ошибку в этой программе java

class Palindrome 
{ 
    public static void main(String[] args) 
    { 
     String str,revStr=""; 
     System.out.println("Enter something to check if it is a palindrome"); 
     Scanner sn = new Scanner(System.in); 
     str = sn.nextLine(); 
     for(int i=str.length()-1;i>=0;i--) 
     { 
      revStr+=Character.toString(str.charAt(i)); 
     } 
     if(revStr==str) 
     { 
     System.out.println("The string "+str+" is a Palindrome"); 
     System.out.println(revStr); 
     } 
     else 
     { 
      System.out.println("The string "+str+" is not a Palindrome"); 
      System.out.println(revStr); 
     } 
    } 
} 

выход:

Enter something to check if it is a palindrome 
nitin 
The string nitin is not a Palindrome 
nitin 
+1

использование 'revStr.equals (str)' вместо '==' – PoByBolek

ответ

0

Здесь изменить эту строку если (ул revStr ==) Для If (revStr.equals (ул))

дело в том, == проверяет равенство ссылок

Object.equals является метод, приведенный в Java, чтобы определить ваш объект равенство класс Строка переопределяет, что и проверить, если две строки представи т же массив символов

0

Ваш ответ здесь:

import java.util.Scanner; 

class Palindrome 
{ 
    public static void main(String[] args) 
    { 
     String str,revStr=""; 
     System.out.println("Enter something to check if it is a palindrome"); 
     Scanner sn = new Scanner(System.in); 
     str = sn.nextLine(); 
     for(int i=str.length()-1;i>=0;i--) 
     { 
      revStr+=Character.toString(str.charAt(i)); 
      System.out.println("revStr" + revStr); 
     } 
     if(revStr.equals(str))//Don't use == 
     { 
     System.out.println("The string "+str+" is a Palindrome"); 
     System.out.println(revStr); 
     } 
     else 
     { 
      System.out.println("The string "+str+" is not a Palindrome"); 
      System.out.println(revStr); 
     } 
    } 
} 

Оператор “==”

В Java, когда «==» оператор используется для сравнения 2 объекта , он проверяет, ссылаются ли объекты на одно и то же место в памяти. Другими словами, он проверяет, являются ли имена двух объектов в основном ссылками на одно и то же место в памяти.

Equals() метод определен в классе Object в Java и используется для проверки равенства двух объектов, определенный бизнес-логики

0

ваше, если условие должно быть, как это

if(revStr.equals(str)){ 
System.out.println("The string "+str+" is a Palindrome"); 
     System.out.println(revStr); 
} 

Поскольку в Java == проверить адрес объекта не содержания для получения более подробной информации проверьте ниже нить

What is the difference between == vs equals() in Java?

Смежные вопросы