有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何将用户输入拆分为字符数组或字符串数组,然后在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


共 (4) 个答案

  1. # 1 楼答案

    你的问题是: 实验室的目标是逐个检查每个单词,看看它是否是回文,如果找到了,就把它打印到屏幕上

    你必须检查每一个有无回文的字符串,这是我从你的问题中得到的:-

    以下是该解决方案的代码:

    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
    

    如果我错了,请纠正我,这样我可以改进

  2. # 2 楼答案

    你可以使用split来实现这个目的,它会起作用的

    String[] wordArray = wordGuess.split(" "); //or .split("<seperator used b/w words>")
    

    现在迭代单词数组,检查每个单词的回文。 在你的代码中,你没有逐个检查每个单词

    //错了

    for(int x=wordArray.length-1;x>=0;x--){
        reverseWord = reverseWord+wordArray[x];
    }
    

    //修改的代码

       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...");
    
                }
            }
    
    
        }
    
  3. # 3 楼答案

    我觉得你的逻辑完全正确。如果您有额外的要求,能够接受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列表,那么它会将空格作为单词的一部分,然后可能不会有回文。此外,你需要循环输入单词,而你也没有这样做

  4. # 4 楼答案

    如果用户只输入一个单词,代码就会正常运行。但当你输入多个单词时,till会给出错误。 示例:输入:赛车你好测试 您的代码会将其反转为:tset olleh racecar

    赛车你好测试!=tset olleh赛车

    如果用户输入的分隔符为,则使用

    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方法调用这个函数三次,并逐个传递所有分隔的字符串

    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