2

我的程序检查以测试一个单词或短语是否是回文(向后和向前读取相同,例如“racecar”)。我遇到的问题是在有人进入“赛车”进行实际测试之后。在下面的代码中,我标记了如果我在哪里输入“racecar”并运行,Java 会返回正确的答案,所以我知道我就在那儿。但是,就将其输入控制台而言,我缺少什么。我认为我的代码没问题,但也许我缺少某些东西或在错误的位置?除非我遗漏了一些东西,否则不会真正寻找新的答案,但如果可能的话,也许是专业人士将我的代码移动到正确的区域,因为我被卡住了!

import java.util.*; 

public class Palindrome { 

public static void main(String[] args) { 
    String myInput; 
    Scanner in = new Scanner(System.in); 

    System.out.println("Enter a word or phrase: ");  **//this asks user for input but doesn't check for whether or not it is a palindrome**
    myInput = in.nextLine(); 
    in.close(); 

    System.out.println("You entered: " + myInput); 
}   

{
    String s="racecar";  **//I can type a word here and it works but I need**
    int i;               **//I need it to work where I ask for the input** 
    int n=s.length(); 
    String str="";  

    for(i=n-1;i>=0;i--)  
        str=str+s.charAt(i);  

    if(str.equals(s))  
        System.out.println(s+ " is a palindrome");  

    else  System.out.println(s+ " is not a palindrome"); }

}

我是编程新手,所以我希望我得到的没问题。我知道回文测试有效,我只需要帮助它通过我将其输入控制台的位置进行测试。谢谢

4

2 回答 2

1

首先,你给出的代码不会编译;那一边。看起来您正在寻找的是“如何阅读用户输入”

简单来说,这是您需要做的事情:

import java.util.Scanner;
...
...

Scanner in = new Scanner(System.in);

// Reads a single line from the console 
// and stores into variable called "s"
String s= in.nextLine();
in.close();

然后继续使用您的代码检查回文的“s”。

于 2010-04-19T01:53:49.630 回答
1

一切看起来都很好,但是您的for循环仍然显示您正在检查是否s是回文,而不是myInput.

现在,您需要做的就是替换每次出现的swith myInput,然后检查您的程序是否正常工作。

请注意,您的程序不会将短语“Madam Im Adam”识别为回文。

由于这是家庭作业,识别短语(不更改代码)的一种可能方法是删除String#replaceAll字符串中的空格(您可以使用 ),然后执行回文检查。

于 2010-04-19T00:58:17.410 回答