在Java中获取用户输入
我正在创建一个程序来检查一个单词或短语是否是回文。我已经找到了真正的“回文测试器”。我一直坚持的是在代码中的什么位置和位置,让控制台读出“输入回文…”,然后是文本。我试过用IO,但效果不好。另外,如何创建循环以继续?此代码一次只允许一个`公共类回文{在Java中获取用户输入,java,recursion,project,palindrome,Java,Recursion,Project,Palindrome,我正在创建一个程序来检查一个单词或短语是否是回文。我已经找到了真正的“回文测试器”。我一直坚持的是在代码中的什么位置和位置,让控制台读出“输入回文…”,然后是文本。我试过用IO,但效果不好。另外,如何创建循环以继续?此代码一次只允许一个`公共类回文{ public static void main(String args[]) { String s=""; int i; int n=s.length(); String str=""; for(i=n-1;
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"); }
}
要读入文本,您需要使用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"));
使用中间的相关代码,很明显。
另一个常见的习惯用法是用一种方法包装测试:
private static boolean isPalindrome(String s) {
...
return str.equals(s);
}
然后过滤标准输入,为每行调用isAlindrome()
:
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
echo“madamimadam”| java MyClass
或整个文件:
java MyClass < /usr/share/dict/words
java MyClass
isAlindrome()
方法;)
myInput!=“exit”--应该使用
!s1.equals(s2)
;s1!=s2
将不起作用。请参见:问题标题的示例有误导性。您在回文方面没有问题,但在收集用户输入方面有问题。是的,但这可能是家庭作业,他们将被禁止做类似的事情。
public static boolean isPalindrome(String s) {
return new StringBuilder(s).reverse().toString().equals(s);
}