我已经开始学习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;
}
}
}
答案 0 :(得分:1)
stringReverse
返回反转的String
(它不会就位)。更新input
,您的代码应按预期工作。像,
input = stringReverse(input);
System.out.println("Your String reversed is:" + " " + input);
此外,checkString
相当于
return b.equals(a);
答案 1 :(得分:1)
因为您将输入和原始传递给checkString()方法。那两个人拥有相同的价值观。很明显,你永远都会成真。
checkString(stringReverse(input), original);
您必须使用上述内容。
答案 2 :(得分:0)
您有不同的选择。
分配
stringReverse(输入)
到像
这样的变量input=stringReverse(input);
检查前
问题是你正在将字符串反转为另一个变量,除非你明确指定它,否则它不会反映在你传递的字符串中。
答案 3 :(得分:0)
在checkString(input, original)
方法中,参数都具有相同的值,因此它总是返回true
你必须像这样传递原始和反向字符串:
String reversedStr = stringReverse(input);
checkString(reversedStr , original);