2016-05-28 3 views
0

Я сделал калькулятор на C++, и я пытаюсь воссоздать его как зеркало в Java.Ввод различных типов переменных за один раз в Java

Были 2 двойных переменных (double a и double b) для 2-х операндов и полукокса (char op) положить в случае цикла, поэтому для 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++, и, возможно, сделать это в одной строке кода? Заранее спасибо.

+1

Вам не нужно нажимать вернуться каждый раз, вы можете ввести '100 + 200 ' –

+0

Примечание: в соответствии с соглашениями о кодировании Java переменные никогда не должны начинаться с капитала, только с буквой в нижнем регистре, поэтому ваша переменная сканера должна быть' scIn' или 'scin' (и даже лучше,' inputScanner' - лучше, когда переменная имена имеют смысл). Имена, начинающиеся с прописных букв, - это типы (классы, интерфейсы, перечисления). – RealSkeptic

ответ

3

Вы не можете читать сразу несколько переменных, используя Scanner, вам нужно будет прочитать их по одному за раз. Тем не менее, есть хороший способ разрешить входные данные, не нажимая каждый раз, вводить каждый раз или вводить пробел: установить другой разделитель! Разделитель по умолчанию - это пробел (который включает в себя новые строки), но вы также можете установить его на границу слова \b из regex.

Scanner in = new Scanner(System.in).useDelimiter("\\b|\\s+"); 

Теперь вы можете прочитать в 12+2, и он будет дробить next звонки, где вы хотите их, или вы можете продолжать нажимать клавишу ввод, или вы можете вставлять пробелы между значениями. Ваш выбор: D

Чтобы восстановить разделитель в норме, используйте in.reset().

Редактировать: Для того, чтобы сохранить границу слова из разделив ввода в десятичную точку, используйте шаблон:

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

Спасибо вам большое! Теперь у меня есть мифическая сила Java в моих руках! –

+0

Err ... не совсем, теперь он не будет печатать число с десятичной частью, открывая сообщение для этого! : D –

+0

Итак, в этом случае регулярное выражение должно проверить, что граница слова не находится рядом с десятичной точкой. Я обновил свой ответ. – 4castle

Смежные вопросы