我试图找出给定的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");
}
谁能告诉我我做错了什么?
答案 0 :(得分:6)
if(s.equals(stringbuffer))
您在此尝试将String
与StringBuffer
进行比较,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)
您正在将类型StringBuffer
与if
类型与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);