有 Java 编程相关的问题?

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

java如何让我的程序接受带有大写字母或空格的回文?

import java.util.Scanner;

public class palindrome {

    public static void main(String[] args) {
        
        
        Scanner sc = new Scanner(System.in);
        String word = sc.next();
        String org_word = word;
        word = word.replace(" ","");
        String reverse = "";
        for (int i = word.length()-1;  i >=0; i--) {
            
            reverse += word.charAt(i);
            
        }
        
        boolean palindrome = true;
        for (int i= 0; i < word.length(); i++){
            
            if(word.charAt(i) != reverse.charAt(i)){
                
                palindrome = false;
                
            }
        }
        if (palindrome) {
            
            System.out.println("Your word is a palindrome!");
        }
    
        else System.out.println("Your word is not a palindrome!");
    }

}

如果我在我的程序中输入一个回文,比如“racecar”,它会正确执行,但是如果我在“racecar”中键入一个空格,它就不起作用了。当我用大写字母开始一个单词时,它也不起作用


共 (1) 个答案

  1. # 1 楼答案

    您正在使用scanner.next()读入您的参数。在race car的情况下,这意味着它将读入第一个单词:race。这确实不是回文。要解决这个问题,需要使用scanner.nextLine()读取所有内容,直到下一行

    为了忽略区分大小写,可以将所有输入更改为小写。string方法有一个非常有用的现成方法:toLowerCase()

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String word = sc.nextLine();
    
        word = word.replace(" ", "");
        word = word.toLowerCase();
        String reverse = "";
        for (int i = word.length() - 1; i >= 0; i ) {
    
            reverse += word.charAt(i);
    
        }
    
        boolean palindrome = true;
        for (int i = 0; i < word.length(); i++) {
    
            if (word.charAt(i) != reverse.charAt(i)) {
    
                palindrome = false;
    
            }
        }
        if (palindrome) {
            System.out.println("Your word is a palindrome!");
        } else {
            System.out.println("Your word is not a palindrome!");
        }
    }