2016-05-28 50 views
0

我用C++製作了一個計算器,我試圖在Java中重新創建它。在Java中一次性輸入不同的變量類型

有對2個操作數和一個char(char op)2個變量(double adouble b)把在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++一樣輸入所有內容,並且可以在一行代碼中完成?提前致謝。

+1

你不必按每次回來,你可以輸入'100 + 200 ' –

+0

注意:根據Java編碼約定,變量不應該以大寫字母開頭,只能使用小寫字母,因此您的掃描器變量應該是scIn或scin(甚至更好,inputScanner) - 當變量更好時名字有意義)。以大寫字母開頭的名稱是類型(類,接口,枚舉)。 – RealSkeptic

回答

3

您無法使用Scanner一次讀取多個變量,您必須一次讀入一個變量。但是,有一種很好的方式可以讓輸入在每次輸入或輸入空格時不發生輸入:設置不同的分隔符!默認分隔符是空格(包括換行符),但您也可以將其設置爲來自正則表達式的字邊界\b

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

現在你可以在閱讀12+2,它會分裂,你希望他們的next電話,或者您也可以繼續鍵入回車,或者你可以把值之間的空格。您的選擇:D

要將分隔符恢復到正常後,請使用in.reset()

編輯:爲了保持字邊界從小數點拆分輸入,使用模式:

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

非常感謝!現在我掌握了爪哇神話的力量! –

+0

Err ...不是真的,現在它不會打印帶有小數部分的數字,請打開一個文章! :D –

+0

好吧,在這種情況下,正則表達式需要檢查字邊界是否不在小數點旁邊。我已經更新了我的答案。 – 4castle

相關問題