用Java输入用户输入

时间:2010-04-17 01:36:01

标签: java recursion project palindrome

我正在创建一个程序来检查单词或短语是否是回文结构。我找到了实际的“回文测试仪”。我坚持的是在我的代码中放置什么以及让控制台读出“输入回文......”然后发短信。我已尝试使用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"); }

}

3 个答案:

答案 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