Как читать и выводить символы без использования Array или String в Java? - PullRequest
0 голосов
/ 08 октября 2019

Я должен прочитать пользовательский ввод, используя System.in.read(), сохранить его в переменную char или int и вывести пользовательский ввод в в обратном порядке . Я должен читать ввод, пока пользователь не вводит "#"

У вас есть идеи, как это сделать? Пример кода:

public static void main(String[] args) {
        int inChar;
        System.out.println("Input:");
        try {
            inChar = System.in.read();
            System.out.print("Output: ");
            System.out.println(inChar); // I only get numbers here
        } catch (IOException e) {
            System.out.println("Error reading from user");
        }
    }

1 Ответ

0 голосов
/ 08 октября 2019

В этой задаче есть две проблемы.

Как читать пользовательский ввод, пока не нажата '#', и как инвертировать массив символов (String).

Проверить это

 public static void main(String[] args) throws IOException {
        String chars = "";
        char inChar = 0;
        System.out.println("Enter Character and press Enter: ");

        while (inChar!='#') {
            inChar = (char)System.in.read();
            if (inChar=='\n'){
                continue;
            }
            chars += inChar;
        }
        System.out.println("Input: " + chars);
        System.out.print("Output: ");
        for (int i=chars.length()-2; i>=0; i--){
            System.out.print(chars.charAt(i));
        }
    }

Редактировать: Спасибо @DevilsHnd. Код обновлен с помощью System.in.read () вместо сканера.

В цикле while код считывает введенные пользователем данные до тех пор, пока не будет нажата клавиша «#». Java не может читать нажатия клавиш, если вы не используете GUI (swing, awt) или библиотеку JNI C ++. Таким образом, код читает пользовательский ввод при нажатии Enter.

Если пользователь вводит #, то цикл прерывается. Для всех остальных символов персонаж добавляется в финальную строку. Поскольку System.in.read () считывает также новые строки (\ n), код не добавляет их в окончательную строку.

Для второй проблемы код повторяется столько раз, сколько длина финальной строки. String и печатает символы, начиная с последнего.
Обратите внимание, что итерация начинается с символа в позиции length-2, это потому, что последний символ String равен '#', поэтому его не следует печатать на выходе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...