Как я могу использовать что-то вроде (input == '\ n'), чтобы определить, когда прекратить принимать ввод пользователя? - PullRequest
0 голосов
/ 05 ноября 2018

Мне нужно преобразовать инфиксную операцию в постфиксную, однако инфиксную операцию нужно вводить как один символ в строке. Поэтому вместо того, чтобы вводить что-то вроде этого: 3-2, вам нужно будет ввести что-то вроде этого:

3
-
2

У меня была идея использовать == '\ n', чтобы определить, является ли введенный символ функцией следующей строки, чтобы определить конец уравнения, но это не работает. Я попытался заменить его другим символом, например == 'e', ​​и это прекрасно работает. Что я могу сделать, чтобы это исправить?

   String string = "";
   Scanner input = new Scanner(System.in);
   boolean flag = true;
   while (flag==true)
   {
       char charIn = input.next().charAt(0);
       string = string + charIn;
       if (charIn=='e') //inputting 'e' gives me my desired result
       {
           flag = false;
       }
   }
   //code that passes string to InfixToPostfix method and prints out the answer. this part works fine

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Это должно делать то, что вы хотите. Чтение только первого символа имеет свои ограничения.

String string = "";
Scanner input = new Scanner(System.in);
boolean flag = true;
while (flag==true)
{
     String nextLine = input.nextLine();
     char charIn;

     if(nextLine.length() > 0) {
       charIn = nextLine.charAt(0); //This is bad idea as you can only operate on single digit numbers
       System.out.println("charIn = " + charIn);;
       string = string + charIn;
     }
     else
          flag = false;
}
0 голосов
/ 05 ноября 2018

Вы не указали, что это было школьное задание или у вас были определенные ограничения, поэтому этот ответ, по общему признанию, является выстрелом в темноте.

Я бы рекомендовал использовать StringBuilder в цикле и читать nextLine() вместо простого next(). Это позволяет определить, была ли запись пустой (т. Е. Клавиша ввода была нажата без ввода символа).

Кроме того, мы должны разрешить пользователю вводить более одного символа в любом случае (что происходит, когда они пытаются ввести 22 как число). Отказ от типа char позволяет это сделать.

public static void main(String[] args) {
    StringBuilder string = new StringBuilder();
    Scanner input = new Scanner(System.in);
    boolean flag = true;
    while (flag) {

        // Capture all characters entered, including numbers with multiple digits
        String in = input.nextLine();

        // If no characters were entered, then the [ENTER] key was pressed
        if (in.isEmpty()) {
            // User is done adding characters; exit the loop
            flag = false;
        } else {

            // Otherwise, get the text entered and add it to our final string
            string.append(in);
        }
    }

    System.out.println("Final String: " + string);
}

Соответствует ли это вашим потребностям?

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