我的程序检查以测试一个单词或短语是否是回文(向前和向后读取相同的内容,例如“racecar”)。我遇到的问题是有人进入“赛车”后让它进行实际测试。在下面的代码中,我标记了如果我输入“racecar”并运行,Java会返回正确的答案,所以我知道我就在那里。但是,只要将其输入控制台,我就错过了什么。我认为我的代码还可以,但也许我有些东西丢失或错误的地方?除非我遗漏了某些东西,否则不是真的在寻找新的答案,但如果可能的话,也许是专业人员将我的代码移动到正确的区域bc我被卡住了!
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"); }
}
我是编程的新手,所以我希望我得到的是好的。我知道回文测试工作我只是需要帮助测试通过我进入控制台的地方。感谢
答案 0 :(得分:1)
一切看起来都不错,但是您的for
循环仍然显示您正在检查s
是否是回文,而不是myInput
。
现在,您需要做的就是用s
替换myInput
的每一次出现,然后检查您的程序是否正常运行。
作为一个单挑,你的程序将不会识别“Madam Im Adam”作为回文。
由于这是作业,一种识别短语(不改变你的代码)的可能方法是删除字符串中的空格(你可以使用String#replaceAll
)然后执行回文检查。
答案 1 :(得分: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”是否为paliandrome。