Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将用户输入拆分为字符数组或字符串数组,然后在java中检查是否有回文_Java_Palindrome - Fatal编程技术网

如何将用户输入拆分为字符数组或字符串数组,然后在java中检查是否有回文

如何将用户输入拆分为字符数组或字符串数组,然后在java中检查是否有回文,java,palindrome,Java,Palindrome,因此,我正在从我的Java编程类编写一个程序,它要求生成一个回文程序。我已经成功地制作了一个程序,该程序只需一个单词的用户输入,就可以运行得很干净,但是我一直在研究如何检查用户单独输入的三个单词。这是到目前为止我的代码。实验室的目标是:逐个检查每个单词,看看它是否是回文——如果你找到了,就把它打印到屏幕上。 我必须遵守这些指示: •要求用户在一行中提供三个回文 •逐个检查每个单词是否为回文–如果找到回文,请打印 它将显示在屏幕上 –提示:查看字符串的toCharArray()方法 •不断询问用户

因此,我正在从我的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