2016-04-13 21 views
1

私はJavaを学び始めました。私はいくつかの問題に遭遇しました。ちょうど私の比較文字列関数が機能しておらず、常に真を返しているのか疑問に思っています逆文字列と逆文字列

プログラムの目的は、文字列の入力を取り、文字列を逆にして、文字列が元の入力(回文)と同じかどうかを確認することです。

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

FYI '文字列=新しいStringBuilderの(STR).reverse()のtoString()逆;'と 'ブールcheckString(B){リターン。 a.equals(b); } ' – Bohemian

答えて

1

stringReverse(それは場所では動作しません)逆Stringを返します。 inputを更新し、コードが期待通りに機能するはずです。あなたはcheckString()メソッドに入力し、元を渡しているので、何かのように、

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

はまた、checkString

return b.equals(a); 
+0

ああ、お元気ですか。だから本質的に私は入力を新しい逆の文字列で更新していませんでした。そして、それは最初の入力(逆ではない)と入力を再び比較していました(オリジナル)。常に真を返します。 ありがとうございます。 –

1

に相当します。それらの2つは同じ値を保持します。あなたがいつも真実になるのは明らかです。

checkString(stringReverse(input), original); 

代わりに上記を使用する必要があります。

0

異なるオプションがあります。

  1. をチェックする前に

    input=stringReverse(input); 
    

    ような変数に

    stringReverse(入力)

を割り当て

  • イメシャSudasinghaの答え。
  • 文字列を別の変数に逆戻りしていて、明示的に割り当てない限り、渡す文字列には反映されません。

    0

    checkString(input, original)メソッドでは、両方のパラメータが同じ値を持つため、常にtrueを返します。
    あなたが元通過しなければならないし、このような文字列を反転:

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