如何将用户输入拆分为字符数组或字符串数组,然后在java中检查是否有回文
因此,我正在从我的Java编程类编写一个程序,它要求生成一个回文程序。我已经成功地制作了一个程序,该程序只需一个单词的用户输入,就可以运行得很干净,但是我一直在研究如何检查用户单独输入的三个单词。这是到目前为止我的代码。实验室的目标是:逐个检查每个单词,看看它是否是回文——如果你找到了,就把它打印到屏幕上。 我必须遵守这些指示: •要求用户在一行中提供三个回文 •逐个检查每个单词是否为回文–如果找到回文,请打印 它将显示在屏幕上 –提示:查看字符串的toCharArray()方法 •不断询问用户,直到他们提供了一组至少包含 一个回文如何将用户输入拆分为字符数组或字符串数组,然后在java中检查是否有回文,java,palindrome,Java,Palindrome,因此,我正在从我的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
}
}
谢谢你抽出时间。请给我回任何文件,将有助于我完成这个实验室或任何其他想法。
我觉得你的逻辑完全正确。如果您有接受CSV单词列表以进行检查的附加要求,那么您可以按如下方式稍微修改代码:
System.out.print("Please enter at least three words to check: ");
String wordGuess = scanUserInput.nextLine();
String[] words = wordGuess.split(",\\s*");
for (String word : words) {
String reverseWord = "";
char[] wordArray = word.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);
}
else {
System.out.println("");
System.out.println("You have not entered a Palindrome...");
System.out.println("Please Try again...");
}
}
我认为你用来分割的图案有问题。你是这样做的:
String[] wordArray = wordGuess.split(",");
但是,如果您输入一个带有空格的CSV列表,那么它将捕获作为单词一部分的空白,并且可能不会有回文。此外,您还需要循环输入单词,而您也没有这样做。您可以使用split来实现此目的,它将起作用
String[] wordArray = wordGuess.split(" "); //or .split("<seperator used b/w words>")
//修改代码
while(true){
System.out.print("Please enter at least three words to check: ");
wordGuess = scanUserInput.nextLine();
String[] wordArray = wordGuess.split(",");
// char[] wordArray = wordGuess.toCharArray();
for (String word : wordArray) {
reverseWord = "";
for(int x=word.length()-1;x>=0;x--){
reverseWord = reverseWord+word.charAt(x);
}
System.out.println(reverseWord);
if(word.equalsIgnoreCase(reverseWord))
{
System.out.println("");
System.out.println("You have found a Palindrome!!!");
System.out.println("The Palindrome we found was "+reverseWord);
}
else{
System.out.println("");
System.out.println("You have not entered a Palindrome...");
System.out.println("Please Try again...");
}
}
}
如果用户只输入一个单词,代码将正常运行。但当您输入多个单词时,till将给出错误。 示例:输入:racecar hello测试 您的代码会将其反转为:tset olleh racecar 赛车你好测试!=采特奥勒赛车 如果用户输入的分隔符为,则使用
String[] wordArray = wordGuess.split(",");
将逻辑放在一个单独的函数中:
public checkPalindrome(String word){
reverseWord="";
for(int x=word.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...");
}
}
从main方法调用此函数3次,并逐个传递所有分隔的字符串
checkPalindrome(wordArray[0]);
checkPalindrome(wordArray[1]);
checkPalindrome(wordArray[2]);
输出:
WELCOME TO THE PALINDROME CHECKER!!!
Enter number of Strings with spaces to check palindrome
abba acac adda abaa
Pallindrome Strings
abba
adda
你的问题是:
实验室的目标是逐个检查每个单词是否为回文,如果找到回文,请将其打印到屏幕上。
您必须检查每个回文字符串,这是我从您的问题中得到的:-
以下是该解决方案的代码:
import java.util.Scanner;
import java.util.StringTokenizer;
/**
* Created by itt on 10/4/17.
*/
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!!!");
System.out.println("Enter Strings with spaces to check palindrome");
wordGuess = scanUserInput.nextLine();
StringTokenizer tokens = new StringTokenizer(wordGuess);
System.out.println("Pallindrome Strings");
while (tokens.hasMoreTokens()){
StringBuilder builder = new StringBuilder();
String token = tokens.nextToken();
builder.append(token);
if(builder.reverse().toString().equals(token)) {
System.out.println(token);
}
}
}
}
输出:
WELCOME TO THE PALINDROME CHECKER!!!
Enter Strings with spaces to check palindrome
abba acac daad jaaj
Pallindrome Strings
abba
daad
jaaj
如果我错了,请纠正我,以便我可以改进。您的代码有什么问题?请更具体一点。请包含代码失败的三个单词输入。你的代码在我看来还行。假设我是输入单词的用户,我输入racecar,hello,test。。。。我需要逐个检查它是否是回文,也许你只需要在结尾处删掉空格?那么如果我输入三个单词,其中一个是回文,其他的不是,我怎么能只显示回文?我可以将输入拆分为数组,然后进行比较?或者?现在我该怎么做呢?我已经在网上研究过了。split()我在我的代码中首先把它注释掉了。我只是不知道如何单独检查for循环是如何出错的?我已经在这里添加了代码。它适用于用逗号分隔的单个或多个单词。它会检查每个单词并打印是否有回文。但是当用户输入“hello,racecar,level”时,它几乎起作用了。它不会拾取回文@alok456I也更改了拆分。拆分(“”),它工作正常,但现在不会中断;如果在if语句中找到回文@ALOK456后循环为true,这取决于您的用例,如果您想在找到第一个回文单词后中断循环,请将其放入break,否则它将打印给定单词中的所有回文。根据您的要求正确使用while循环及其中断条件。是的,先生,这就是为什么我要问如何修复它,以便我可以单独比较它是否是回文,我在主函数中将其称为何处?在我的while循环中?这在@arunabhgosal有效,但是当我得到至少一个回文时,我无法打破循环
WELCOME TO THE PALINDROME CHECKER!!!
Enter Strings with spaces to check palindrome
abba acac daad jaaj
Pallindrome Strings
abba
daad
jaaj