2016-04-13 46 views
1

我已經開始學習java,並且遇到了一些麻煩。只是想知道爲什麼我的比較字符串函數不工作,並總是返回true;反向並比較字符串

程序的目的是接受一個字符串的輸入,反轉字符串,看看字符串是否與原始輸入(迴文)相同。

import java.util.Scanner; 

public class palinedromeString { 


    private static Scanner keyboard; 

    public static void main(String[] args) { 

     System.out.println("Please enter a Palindrome"); 
     keyboard = new Scanner(System.in); 
     String input = keyboard.next(); 
     String original = input; 

     System.out.println("You entered: " + original); 
     System.out.println("Your String reversed is:" + " " + stringReverse(input)); 
     System.out.println(checkString(input, original)); 
    } 

    public static String stringReverse(String a) { 
     String result = ""; 

     for(int i = a.length()-1; i>=0; i--){ 
      result = result + a.charAt(i); 
     } 


     return result; 
    } 

    public static boolean checkString(String a, String b){ 

     if(b.equals(a)){ 
      return true; 
     } 
     else{ 
     return false; 
     } 
    } 

} 
+1

僅供參考'字符串反轉=新的StringBuilder(STR).reverse()的toString();'和'布爾checkString(A,B){返回a.equals(b)中; }' – Bohemian

回答

1

stringReverse返回逆轉String(它不到位操作)。更新input和你的代碼應該按預期工作。像,

input = stringReverse(input); 
System.out.println("Your String reversed is:" + " " + input); 

此外,因爲要傳遞輸入和原始到checkString()方法checkString相當於

return b.equals(a); 
+0

啊,謝謝。所以基本上我沒有用新的反向字符串更新輸入。它是比較第一個輸入(不是反向)和輸入(原始)總是返回true。 非常感謝。 –

1

。這兩個具有相同的值。很明顯你總是會變得真實。

checkString(stringReverse(input), original); 

你必須使用上面的代替。

0

您有不同的選擇。

  1. 分配

    stringReverse(輸入)

到可變狀

input=stringReverse(input); 

檢查

  • 之前Imesha Sudasingha的回答。
  • 事情是你將字符串反轉爲一個不同的變量,並且它不會反映在你傳遞的字符串中,除非你明確地指定它。

    0

    這裏checkString(input, original)方法,這兩個參數具有相同的值,因此它總是返回true。
    你要通過原始和顛倒的字符串是這樣的:

    String reversedStr = stringReverse(input); 
    checkString(reversedStr , original);