2016-04-13 19 views
1

Karşılaştır java öğrenmeye başladım ve bazı sıkıntılarla karşılaştım. Sadece karşılaştırmalı dize işlevimin neden çalışmadığını ve her zaman doğru döndüğünü merak ediyorum;Tersine çevir ve dize

Programın amacı bir dizgenin girişini almak, dizgeyi ters çevirmek ve dizginin orijinal girişle aynı mı (palindrom) olduğunu görmek.

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

Bilginize 'String = new StringBuilder ters (str) .reverse() toString():
Orijinal geçmek zorunda ve böyle dize tersine çevirdi. a.equals (b) } ' – Bohemian

cevap

1

stringReverse (o yerde çalışmaz) String tersine döner. Güncelleştirme input ve kodunuz beklendiği gibi çalışmalıdır. Eğer checkString() yöntemine giriş ve orijinal geçiyoruz Çünkü bir şey gibi

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

Ayrıca checkString

return b.equals(a); 
+0

Ahh teşekkür ederim. Öyleyse esas olarak yeni ters çevrilmiş dizeyle girdiyi güncellemedim. Ve ilk girdiyi (ters değil) tekrar girdiyle (orijinal) her zaman doğru olanı karşılaştırıyordu. Çok teşekkürler. –

1

eşdeğerdir. Bu ikisi aynı değerleri tutar. Her zaman doğru olduğu belli.

Yukarıdakileri kullanmak zorundasınız.

0

Farklı seçenekleriniz var.

  1. atama

    stringReverse (giriş) bir değişkene

  1. kontrol etmeden önce
    input=stringReverse(input); 
    

    gibi Imesha Sudasingha'nın cevabı.

şey farklı bir değişkene dize ters olan ve o açıkça atanmadıkça geçmek dize yansıyan olsun etmediğinden.

0

checkString(input, original) yönteminde, her iki parametre de aynı değere sahiptir, dolayısıyla her zaman doğru döner. `Boole checkString (a, b) {return` ve;

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