Принимая пользовательский ввод в Java - PullRequest
2 голосов
/ 17 апреля 2010

Я создаю программу, которая проверяет, является ли слово или фраза палиндромом. У меня есть настоящий "тестер палиндрома". Я застрял в том, где и что поместить в мой код, чтобы консоль зачитала «Enter palindrome ...», а затем текст. Я пытался с IO, но это не работает правильно. Кроме того, как мне создать цикл, чтобы продолжать идти? Этот код допускает только один открытый класс 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 ]

7 голосов
/ 17 апреля 2010

Чтобы прочитать текст, вам нужно использовать класс 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 голос
/ 17 апреля 2010

Не настоящий ответ, так как он уже дан (следовательно, CW), но я не смог удержаться (переписать) метод isPalindrome();)

public static boolean isPalindrome(String s) {
    return new StringBuilder(s).reverse().toString().equals(s);
}
0 голосов
/ 17 апреля 2010

Другая распространенная идиома заключается в том, чтобы обернуть тест по методу:

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
...