回文的java字符串概念
我试图找出给定的回文的java字符串概念,java,string,Java,String,我试图找出给定的字符串是否是回文,但是,即使是回文,它也永远不会进入打印“给定字符串是回文”的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 stringbuffe
字符串
是否是回文,但是,即使是回文,它也永远不会进入打印“给定字符串是回文”的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");
}
有人能告诉我我做错了什么吗?如果(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;
}
这就是内部方法的工作原理。因此,首先它将检查另一个对象是否为字符串的实例。因此,在这里它将返回false
So.equals()
方法将在任何情况下给出false
作为输出
您可以使用那里的来比较两者,或者将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");
}
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;
}
这就是内部方法的工作原理。因此,首先它将检查另一个对象是否为字符串的实例。因此,在这里它将返回false
So.equals()
方法将在任何情况下给出false
作为输出
您可以使用那里的来比较两者,或者将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");
}
您正在比较类型
String
和类型StringBuffer
,因此它永远不会进入if
块
不仅比较字符串
内容,还检查另一个对象是否是字符串
你要找的是不做类型检查的
if(s.contentEquals(stringbuffer))
{
System.out.println(" given string is a palindrome");
}
或者在比较之前将StringBuffer
变量转换为类型String
if(s.equals(stringbuffer.toString()))
{
System.out.println(" given string is a palindrome");
}
您正在比较类型
String
和类型StringBuffer
,因此它永远不会进入if
块
不仅比较字符串
内容,还检查另一个对象是否是字符串
你要找的是不做类型检查的
if(s.contentEquals(stringbuffer))
{
System.out.println(" given string is a palindrome");
}
或者在比较之前将StringBuffer
变量转换为类型String
if(s.equals(stringbuffer.toString()))
{
System.out.println(" given string is a palindrome");
}
在
if
条件下,您正在比较两种不同类型的对象。记住String
&StringBuffer
是两个不同的类,因此它们的对象不相等。
为了得到正确的结果,您需要从StringBuffer中获取String
对象
因此,
if(s.equals(stringbuffer.toString())
对您有效。在if
条件下,您正在比较两种不同类型的对象。记住String
&StringBuffer
是两个不同的类,因此它们的对象不相等。
为了得到正确的结果,您需要从StringBuffer中获取String
对象
因此,
if(s.equals(stringbuffer.toString())
对您有用。谢谢您让我知道它的内部实现。@PrasadS如果您发现任何有用的答案,请接受它!我无法做到这一点,因为我只有13点声誉。否则我会那样做的。谢谢你,阿加尼认为我们不需要那么多的声誉来接受一个答案。@prasad不需要。你确定你试对了吗?它是左边的复选按钮(灰色)。感谢您让我知道它的内部实现。@PrasadS如果您发现任何答案有用,请接受它!我无法做到这一点,因为我只有13点声誉。否则我会那样做的。再一次谢谢你,阿加尼,不要认为我们需要那么多的声誉来接受答案。@PrasadS,不,不需要。你确定你试对了吗?是的,我尝试了你之前建议的第二种方法。很好用。谢谢是的,我试了你刚才建议的第二种方法。很好用。谢谢你,第一眼看上去还不错。在IF语句上加一个断点,看看有什么不同。可能是编码,乍一看还可以。在IF语句上加一个断点,看看有什么不同。可能是编码。