我已经开始学习java了,遇到了一些麻烦。只是想知道为什么我的比较字符串函数不起作用,并且总是返回true;
该程序的目的是获取一个字符串的输入,反转该字符串,并查看该字符串是否与原始输入(回文)相同。
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;
}
}
}
stringReverse
返回反转的String
(它不在适当位置操作)。更新input
,您的代码应该可以按预期工作。类似
input = stringReverse(input);
System.out.println("Your String reversed is:" + " " + input);
此外,checkString
等效于
return b.equals(a);
因为您将输入和原始传递给checkString()方法。这两者的价值观相同。很明显,你永远都是对的。
checkString(stringReverse(input), original);
您必须使用以上内容。
您有不同的选项。
-
分配
字符串反向(输入)
到像这样的变量
input=stringReverse(input);
检查之前
- 伊梅莎·苏达辛哈的回答
问题是,您正在将字符串反转为另一个变量,除非您显式分配它,否则它不会反映在您传递的字符串中。
在checkString(input, original)
方法中,两个参数都有相同的值,因此它总是返回true
你必须像这样传递原始和反转的字符串:
String reversedStr = stringReverse(input);
checkString(reversedStr , original);