为什么这总是导致尝试?

时间:2014-07-20 20:03:53

标签: java validation equality palindrome

我正在为学校编写这个java代码。我需要查看数据是否是回文,然后让用户知道结果。我的眼睛在流血。我无法弄清楚这一点!

import javax.swing.JOptionPane;
import helpers.*;

public class Palindrome {
    public static boolean check(String dataInput) { 
        boolean test = false;
        String reverseDataInput = new StringBuffer(dataInput).reverse().toString();
        if (dataInput == reverseDataInput){
            test=true;
            return test;
        }
        return test;
    }

    public static void main(String[] args) {

        String inputString = "";
        int number = 0;
        boolean isPalindrome = false;       

        number = helpers.InputUtilities.getIntegerInput(inputString, -99999, 99999);

        String str = Integer.toString(number);
        isPalindrome = check(str);
        if (isPalindrome = true){
            JOptionPane.showMessageDialog(null, str + " is a palindrome!", "Area", JOptionPane.PLAIN_MESSAGE);
        }
        else {
            JOptionPane.showMessageDialog(null, str + " is not a palindrome!", "Area", JOptionPane.PLAIN_MESSAGE);
        }       
    }
}

2 个答案:

答案 0 :(得分:0)

首先将String.equals()进行比较,而不是==,因为它们是对象(请参阅this)。

if (dataInput.equals(reverseDataInput))

第二个if语句有点不对。

if (isPalindrome = true){

相反

if (isPalindrome == true){

或(这对某些人来说看起来更好)

if (isPalindrome){

答案 1 :(得分:0)

之前我已经看过这个问题(这里:Local variable not used)。

问题只是if:语句。取代

if (isPalindrome = true)

if (isPalindrome)

您还需要修改第一个if

if (dataInput == reverseDataInput)

通过

if (dataInput.equals(reverseDataInput))

因为==检查指针相等性并且因为你生成了一个新字符串,所以两个字符串不相同,它们是相同的,但不一样......