2014-10-16 70 views
0

我想知道是否有方法將用戶輸入作爲fixnum。我可以做類似a = gets.chomp.to_i,但是在java中有沒有類似於Ruby的nextInt(),還是我需要每次都做這些轉換?以fixnum作爲用戶輸入

回答

0

當您使用輸入流時,如文件或終端,您正在處理原始字節。你從不直接使用原始類型。如果你想要原始類型,你必須使用方法來理解字節。在很多情況下,「使用原始字節」與使用字符串是同義詞,因此字符串類型通常具有轉換方法以從中提取類型化數據。

Java有Scanner類,它有一個nextInt()方法。它用於從文本中提取Java整數。它通過解析文本並將其轉換爲請求的原始數據類型來實現,在此例中爲int。爲了它的工作,你必須給它一個輸入源。當你將它包裝在System.in周圍時,你會得到一個從標準輸入中提取數據的Scanner,標準輸入通常連接到終端。

Scanner scanner = new Scanner(System.in); 
int i = scanner.nextInt(); 

在Ruby中,我們可以簡單地讓字符串嘗試將自身轉換爲另一種類型。如果你想要一個整數

line = gets # reads from standard input 
i = line.to_i # converts the string to an integer 

字符串的to_i方法執行非常寬鬆的轉換,並返回0,如果它無法弄清楚的數量,或者如果沒有數量與開始。它永遠不會引發異常,並且總會返回一個數字,即使沒有數字要解析。

Integer()方法執行更嚴格的轉換。

0

首先,您的gets.chomp.to_i工作,但不是正確的方法。我不知道你是如何得到這個想法來附加chomp,但這在這裏沒有意義。你應該做gets.to_i。所以,不,你不需要每次都做轉換gets.chomp.to_i

Ruby可以從終端輸入接收的唯一東西是一個字符串。沒有辦法從終端接收除字符串以外的任何內容。