java - for循环的回文问题
问题描述
嗨,我正在尝试建立一个回文,但它似乎不起作用,请你帮忙。我应该在爸爸身上得到真,在其他事情上得到假
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter Your User Name");
String userInput =input.nextLine();
System.out.println(abcDEF(userInput));
}
static boolean abcDEF(String userInput) {
StringBuilder s1 = filter(userInput);
StringBuilder s2 = reverse(userInput);
return s1.toString() == s2.toString();
}
static StringBuilder filter(String userInput) {
StringBuilder sb = new StringBuilder();
char[] inputData = userInput.toCharArray();
for (int i = 0; i < userInput.length(); i++) {
if (userInput.matches("[a-zA-Z0-9]+")) {
sb.append(inputData[i]);
}
}
return sb;
}
static StringBuilder reverse(String userInput) {
StringBuilder sb = filter(userInput);
sb.reverse();
return sb;
}
解决方案
将您的abcDEF()更改为此(最后一行):
static boolean abcDEF(String userInput) {
StringBuilder s1 = filter(userInput);
StringBuilder s2 = reverse(userInput);
return s1.toString().equals(s2.toString());
}
您正在比较代码中两个字符串的引用,这在您的情况下是不同的。相反,您应该比较字符串的内容。这就是比较字符串内容的方式。
推荐阅读
- java - 具有并发性的 AWS SQS 队列配置的 Spring JMS 侦听器
- powershell - 使用 PowerShell 脚本从设备管理器中卸载隐藏的“网络适配器”
- typescript - 包装函数,输入和输出仍然有相同的类型信息
- java - 使用 red5.io 在运行时连接 mp4 文件
- reactjs - 防止本质上是动态的 TextField 自动填充
- google-cloud-platform - gsutil - 查找文件和文件夹
- c++ - 写 gpio_pin 时在“,”之前的预期主表达式
- c# - JSON.net 将离散元素反序列化为列表
- sql - 从连接表返回计算字符串的 PostgreSQL 函数
- java - 根据java中的嵌套顺序对字符串列表进行排序