如何将用户输入拆分为字符数组或字符串数组,然后在java中检查是否有回文
因此,我正在从我的Java编程类编写一个程序,它要求生成一个回文程序。我已经成功地制作了一个程序,该程序只需一个单词的用户输入,就可以运行得很干净,但是我一直在研究如何检查用户单独输入的三个单词。这是到目前为止我的代码。实验室的目标是:逐个检查每个单词,看看它是否是回文——如果你找到了,就把它打印到屏幕上。 我必须遵守这些指示: •要求用户在一行中提供三个回文
•逐个检查每个单词是否为回文–如果找到回文,请打印 它将显示在屏幕上 –提示:查看字符串的toCharArray()方法 •不断询问用户,直到他们提供了一组至少包含 一个回文
import java.util.Scanner;
public class Palindrome {
private static Scanner scanUserInput;
private static String wordGuess, reverseWord ;
public static void main(String[] args) {
scanUserInput = new Scanner(System.in);
System.out.println("WELCOME TO THE PALINDROME CHECKER!!!");
while(true){
System.out.print("Please enter at least three words to check: ");
wordGuess = scanUserInput.nextLine();
reverseWord = "";
//String[] wordArray = wordGuess.split(","); I tried to use this way to split the inputs but no luck
char[] wordArray = wordGuess.toCharArray();
for(int x=wordArray.length-1;x>=0;x--){
reverseWord = reverseWord+wordArray[x];
}
System.out.println(reverseWord);
if(wordGuess.equalsIgnoreCase(reverseWord))
{
System.out.println("");
System.out.println("You have found a Palindrome!!!");
System.out.println("The Palindrome we found was "+reverseWord);
break;
}
else{
System.out.println("");
System.out.println("You have not entered a Palindrome...");
System.out.println("Please Try again...");
}
}//end of main
}
}
谢谢你抽出时间。请给我回任何文件,将有助于我完成这个实验室或任何其他想法。 enter image description here
# 1 楼答案
你的问题是: 实验室的目标是逐个检查每个单词,看看它是否是回文,如果找到了,就把它打印到屏幕上
你必须检查每一个有无回文的字符串,这是我从你的问题中得到的:-
以下是该解决方案的代码:
输出:
如果我错了,请纠正我,这样我可以改进
# 2 楼答案
你可以使用split来实现这个目的,它会起作用的
现在迭代单词数组,检查每个单词的回文。 在你的代码中,你没有逐个检查每个单词
//错了
//修改的代码
# 3 楼答案
我觉得你的逻辑完全正确。如果您有额外的要求,能够接受CSV单词列表进行检查,那么您可以稍微修改代码,如下所示:
我认为你用来分割的图案有问题。你当时是这么做的:
但是如果你输入一个带有空格的CSV列表,那么它会将空格作为单词的一部分,然后可能不会有回文。此外,你需要循环输入单词,而你也没有这样做
# 4 楼答案
如果用户只输入一个单词,代码就会正常运行。但当你输入多个单词时,till会给出错误。 示例:输入:赛车你好测试 您的代码会将其反转为:tset olleh racecar
赛车你好测试!=tset olleh赛车
如果用户输入的分隔符为,则使用
将逻辑放在一个单独的函数中:
从main方法调用这个函数三次,并逐个传递所有分隔的字符串
输出: