我正在创建一个程序来检查单词或短语是否是回文结构。我找到了实际的“回文测试仪”。我坚持的是在我的代码中放置什么以及让控制台读出“输入回文......”然后发短信。我已尝试使用IO,但它无法正常工作。另外,我如何创建一个循环继续前进?这段代码一次只允许一个`public class Palindrome {
public static void main(String args[]) {
String s="";
int i;
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 :(得分:7)
要阅读文本,您需要使用Scanner类,例如:
import java.util.*;
public class MyConsoleInput {
public static void main(String[] args) {
String myInput;
Scanner in = new Scanner(System.in);
System.out.println("Enter some data: ");
myInput = in.nextLine();
in.close();
System.out.println("You entered: " + myInput);
}
}
在你实际进行回文检查之前应用这个概念,并且你在那个方面进行了分类。
至于循环以允许多次检查,您可以执行诸如提供关键字(例如“退出”)之类的操作,然后执行以下操作:
do {
//...
} while (!myInput.equals("exit"));
显然你的相关代码在中间。
答案 1 :(得分:1)
不是真正的答案,因为已经给出了(因此CW),但我无法抗拒(重新)编写isPalindrome()
方法;)
public static boolean isPalindrome(String s) {
return new StringBuilder(s).reverse().toString().equals(s);
}
答案 2 :(得分:0)
另一个常见的习惯用法是将测试包装在一个方法中:
private static boolean isPalindrome(String s) {
...
return str.equals(s);
}
然后过滤标准输入,为每一行调用isPalindrome()
:
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String s;
while ((s = in.readLine()) != null) {
System.out.println(isPalindrome(s) + ": " + s );
}
}
这样可以轻松检查一行:
echo "madamimadam" | java MyClass
或整个文件:
java MyClass < /usr/share/dict/words