我用C++做了一个计算器,我正在尝试用Java像镜像一样重新创建它。
有 2 个双变量(double a
和 double b
)用于 2 个操作数和一个 char( char op
) 放入 if 循环,所以对于 instace 如果op = '+'
它将cout << a << op << b << "=" << a+b << endl;
。
所以我可以在控制台提示符下编写12+2
,并将其视为输出12+2=14
。
现在在 Java 中,我必须每行一个:
Scanner Scin = new Scanner(System.in);
System.out.println("OPERATION>");
a = Scin.nextDouble();
op = Scin.next().charAt(0);
b = Scin.nextDouble();
所以我必须写一个值,每次都按回车键。我怎样才能像C++一样一次性输入所有内容,并且可能在一行代码中完成?提前谢谢。
你不能使用 Scanner
一次读入多个变量,你必须一次读取一个变量。但是,有一种很好的方法可以让输入发生,而无需每次都按回车键或输入空格:设置不同的分隔符!默认分隔符是空格(包括换行符),但您也可以将其设置为正则表达式中的单词边界b
。
Scanner in = new Scanner(System.in).useDelimiter("\b|\s+");
现在你可以读12+2
,它会把next
调用拆分到你想要的地方,或者你可以继续按回车键,或者你可以在值之间放置空格。您的选择:D
要在之后将分隔符恢复正常,请使用 in.reset()
。
编辑:要防止单词边界在小数点处拆分输入,请使用以下模式:
(?<!\.)\b(?!\.)|\s+