简体   繁体   English

检查回文程序的字符串

[英]Check string for palindrome program

Im new to programming.我是编程新手。 I have to make a palindrome checker program for my class.我必须为我的班级制作一个回文检查程序。 I'm having trouble iterating this program, it needs to keep asking the user to enter a phrase until they enter "done".我在迭代这个程序时遇到了麻烦,它需要不断要求用户输入一个短语,直到他们输入“完成”。 Would a do loop be appropriate? do 循环是否合适?

This is what my output should look like:这是我的输出应该是这样的:

Enter phrase: A man, a plan, a canal, Panama!输入短语:一个人,一个计划,一条运河,巴拿马! That is a Palindrome.那是回文。

Enter phrase: Once upon a time That is NOT a Palindrome.输入短语:从前那不是回文。

Enter phrase: No 'x' in Nixon.输入短语:尼克松没有“x”。 That is a Palindrome.那是回文。

Enter phrase: done输入短语:完成

and this is my work so far这是我迄今为止的工作

      import java.util.Scanner;
      class Palindrome2 {
      public static void main(String args[]) {
      
       
       
       Scanner in = new Scanner(System.in);
    
      String reverseString="";
      String inputString;
      
      System.out.println("Palindrome Checker");
      
          
      do {
        System.out.println("Enter a phrase: ");
        inputString = in.nextLine();
        inputString = inputString.replaceAll("[^A-Za-z]+", "").toLowerCase(); 
        
        char[] characters = inputString.toCharArray();
       
    
   
      for ( int i = characters.length - 1 ; i >= 0 ; i-- )
         reverseString = reverseString + inputString.charAt(i);
     
      if (inputString.equals(reverseString))
          System.out.println("That is a palindrome.");
       else
          System.out.println("That is not a palindrome.");
       
      } while (inputString.toLowerCase().equals("done"));
    
      
 
    in.close();
      
   }
}

You don't need to check if the "done" string is a palindrome or not so, I would recommend using while loop instead of do while.您不需要检查“完成”字符串是否是回文,我建议使用 while 循环而不是 do while。 Secondly, the condition should have a not ie !其次,条件应该有一个not ie ! and Enter a phase: should be a print statement and not println, as per your sample run.Enter a phase:应该是一个打印语句而不是 println,根据您的示例运行。 Your code would look like this:您的代码如下所示:

import java.util.Scanner;
      class Palindrome2 {
      public static void main(String args[]) {
      
       
       
       Scanner in = new Scanner(System.in);
    
      String reverseString="";
      String inputString;
      
      System.out.println("Palindrome Checker");
      System.out.print("Enter a phrase: ");
      inputString = in.nextLine();
      inputString = inputString.replaceAll("[^A-Za-z]+", "").toLowerCase();
      
          
      while (!inputString.equals("done")){ 
        
        char[] characters = inputString.toCharArray(); 
    
   
      for ( int i = characters.length - 1 ; i >= 0 ; i-- )
         reverseString = reverseString + inputString.charAt(i);
     
      if (inputString.equals(reverseString))
          System.out.println("That is a palindrome.");
       else
          System.out.println("That is not a palindrome.");
      
      System.out.print("Enter a phrase: ");
      inputString = in.nextLine();
      inputString = inputString.replaceAll("[^A-Za-z]+", "").toLowerCase();
       
      }
    
      
 
    in.close();
      
   }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM