在Java中一次性输入不同的变量类型 我用C++做了一个计算器,我试图用java来重建它。

在Java中一次性输入不同的变量类型 我用C++做了一个计算器,我试图用java来重建它。,java,user-input,Java,User Input,有两个双变量(double a和double b)用于两个操作数和一个字符(char op)放入if循环,因此对于instace ifop='+'它将cout您不能使用Scanner一次读取多个变量,您必须一次读取一个变量。但是,有一种很好的方法可以允许输入发生,而不必每次按enter键或输入空格:设置不同的分隔符!默认分隔符是空白(包括换行符),但也可以从正则表达式中将其设置为单词边界\b Scanner in = new Scanner(System.in).useDelimiter("\\

有两个双变量(
double a
double b
)用于两个操作数和一个字符(
char op
)放入if循环,因此对于instace if
op='+'
它将
cout您不能使用
Scanner
一次读取多个变量,您必须一次读取一个变量。但是,有一种很好的方法可以允许输入发生,而不必每次按enter键或输入空格:设置不同的分隔符!默认分隔符是空白(包括换行符),但也可以从正则表达式中将其设置为单词边界
\b

Scanner in = new Scanner(System.in).useDelimiter("\\b|\\s+");
现在,您可以读入
12+2
,它将在您需要的地方拆分
下一个
调用,或者您可以继续按enter键,或者在值之间加空格。你的选择:D

要在以后将分隔符恢复为正常值,请在.reset()中使用

编辑:要防止单词边界在小数点处拆分输入,请使用以下模式:

(?<!\\.)\\b(?!\\.)|\\s+

(?您不能使用
扫描仪同时读取多个变量,您必须一次读取一个变量。但是,有一种很好的方法可以允许在每次不按enter键或不输入空格的情况下进行输入:设置不同的分隔符!默认分隔符为空白(包括换行符),但也可以从regex将其设置为单词边界
\b

Scanner in = new Scanner(System.in).useDelimiter("\\b|\\s+");
现在您可以读入
12+2
,它会将
下一个
调用拆分到您想要的位置,或者您可以继续按enter键,或者您可以在值之间加空格。您的选择:D

要在以后将分隔符恢复为正常值,请在.reset()中使用

编辑:要防止单词边界在小数点处拆分输入,请使用以下模式:

(?<!\\.)\\b(?!\\.)|\\s+

(?您不必每次按return键,您可以输入
100+200
注意:根据Java编码惯例,变量不得以大写字母开头,只能以小写字母开头,因此扫描仪变量应为
scIn
scIn
(更好的是,
inputScanner
——变量名有意义时更好)。以大写字母开头的名称是类型(类、接口、枚举)。您不必每次按return键,您可以输入
100+200
注意:根据Java编码惯例,变量不得以大写字母开头,只能以小写字母开头,因此您的scanner变量应为
scIn
scIn
(更好的是,
inputScanner
——变量名有意义时更好)。以大写字母开头的名称是类型(类、接口、枚举)。非常感谢!现在我掌握了Java的神奇力量!呃…不太可能,现在它不会打印带小数点的数字,在帖子中打开!:DOk,那样的话正则表达式需要检查单词边界是否不在小数点附近。我已经更新了我的答案。非常感谢!现在我掌握了Java的神奇力量!Err…不是真的,现在它不会打印带小数部分的数字,请在帖子中打开!:DOk,在这种情况下,正则表达式需要检查单词边界是否不在小数点附近。我已更新了答案。