Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中获取用户输入_Java_Recursion_Project_Palindrome - Fatal编程技术网

在Java中获取用户输入

在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;

我正在创建一个程序来检查一个单词或短语是否是回文。我已经找到了真正的“回文测试器”。我一直坚持的是在代码中的什么位置和位置,让控制台读出“输入回文…”,然后是文本。我试过用IO,但效果不好。另外,如何创建循环以继续?此代码一次只允许一个`公共类回文{

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 MyClassisAlindrome()方法;)


myInput!=“exit”--应该使用
!s1.equals(s2)
s1!=s2
将不起作用。请参见:问题标题的示例有误导性。您在回文方面没有问题,但在收集用户输入方面有问题。是的,但这可能是家庭作业,他们将被禁止做类似的事情。
public static boolean isPalindrome(String s) {
    return new StringBuilder(s).reverse().toString().equals(s);
}