回文的{j}字符串概念

时间:2017-05-05 19:07:07

标签: java string

我试图找出给定的String是否是回文,然而,它永远不会进入打印&#34的if块;给定字符串是一个回文" 即使回文。

String s;
Scanner scan = new Scanner(System.in);

System.out.println("enter any string");
s = scan.nextLine();
System.out.println("contents of string s " + s);
scan.close();

StringBuffer stringbuffer = new StringBuffer(s);
System.out.println("contents of stringbuffer " + stringbuffer);
stringbuffer = stringbuffer.reverse();

System.out.println("contents of reversed stringbuffer " + stringbuffer);
if(s.equals(stringbuffer))
{
    System.out.println(" given string is a palindrome");
}

谁能告诉我我做错了什么?

3 个答案:

答案 0 :(得分:6)

if(s.equals(stringbuffer))您在此尝试将StringStringBuffer进行比较,false将始终返回public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }

instanceOf String

这是内部 .equals() 方法的工作原理。首先,它会检查其他对象是否为false。因此,它会返回.equals(),因此false方法最终会在每种情况下都将StringBuffer作为输出。

您可以使用 s.contentEquals(stringbuffer) 来比较两者或将String转换为String.equals()并调用if(s.contentEquals(stringbuffer)) { System.out.println(" given string is a palindrome"); } 方法。

StringBuffer

或将String转换为.equals(),然后调用if(s.equals(stringbuffer.toString())) { System.out.println(" given string is a palindrome"); } 方法,

MWCellArray

答案 1 :(得分:3)

if条件下,您正在比较两种不同类型的对象。请记住String& StringBuffer是两个不同的类,因此它们的对象不会相等。 为了获得正确的结果,您需要从StringBuffer中获取String对象....

所以if(s.equals(stringbuffer.toString()))会对你有用。

答案 2 :(得分:2)

您正在将类型StringBufferif类型与String#equals()进行比较,因此永远不会进入String

String#equals()不仅会比较String内容,还会检查其他对象是否是if(s.contentEquals(stringbuffer)) { System.out.println(" given string is a palindrome"); } 的实例

您正在寻找不进行类型检查的String#contentEquals()

StringBuffer

或在比较之前将String变量转换为if(s.equals(stringbuffer.toString())) { System.out.println(" given string is a palindrome"); } 类型。

jQuery(document).ready(function(){
setInterval(function(){
    var requiredInput = jQuery('input.form-text');
    if( requiredInput.hasClass('wrong') ) {
        requiredInput.parent('.trigger-wrapper').addClass('wrong');
    }
    else {
        requiredInput.parent().removeClass('wrong');
    }
}, 100);