如何从单行字符串表达式中读取整数和非整数?

时间:2017-07-25 22:13:52

标签: java string java.util.scanner infix-notation

为了安全起见,我想指出在收到用户输入后我不想评估表达式或字符串。我想做的就是从用户那里获取一个字符串输入,然后在一个单独的行中分别打印字符串的每个标记

因此:如果输入的字符串是" 123 bc 76 hello +"然后它会打印" 123"," bc"," 76","你好"," +"分别在每一行。

我写了一个小程序,要求用户输入一个表达式(一个数学表达式),程序然后在不同的行上打印数字和运算符。

例如,

INPUT: 10 - 203/5

预期输出

10

-

203

/

5

以下是我为上述问题编写的代码:

import java.util.Scanner;

public class Sol {

public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);

    String myString;

    System.out.println("enter the expression : ");
    myString = scanner.nextLine();

    //System.out.println("your expresssion : " + myString + "\n");

    while (scanner.hasNext()) {

        if (scanner.hasNextInt()) {
            int temp = scanner.nextInt();
            System.out.println(temp);
        }
        else {
            String operator = scanner.next();
            System.out.println(operator);
        }
    }
}
}

我觉得问题非常简单,因此编写了上面的代码,认为我的逻辑是正确的。但是,当我运行程序时,我没有得到任何输出。在获取输入后,命令行光标只是一直闪烁,没有响应/输出等。

此外,当发生这种情况时,当我再次输入内容时(在运行过程中)并且如果它是单个标记,例如字符串标记或整数标记,则会打印出来。

也就是说,如果我输入10 + 203/55并按下Enter键,程序将保持闪烁的光标。没有输出。现在,如果此时我输入一个标记,例如" 20"或" /"或" abc"然后那个东西被打印出来并继续循环。该计划没有结束!

我实际上必须按ctrl + z才能退出执行!!

有谁能告诉我我的程序出错了?

另外,如果你能指出需要做些什么来给我提供我需要的输出,那将是非常有帮助的!

P.S。实际上我编写了一个程序来从文本文件中读取中缀表达式,将其转换为后缀,对其进行评估并将结果写入另一个文件。虽然程序对单个数字整数正常工作,但它总是因多个数字整数而失败。因此,我将代码修改为与上述代码非常相似的内容,以读取2位或更多长度的整数。但是,当我运行代码时,我得到了空指针异常。那时我决定编写上面的代码并检查我的逻辑是否正确(事实证明它不是!!)。

所以任何帮助,最终都会帮助我相应地修改我的中缀评估表达式。

提前多多感谢!!

0 个答案:

没有答案