我有一個文本文件,每行包含3個數字。每個數字由一個空格分隔。將字符串轉換爲int和雙精度型
1 1 4.0
當我從文件中讀取該字符串時,我想將前兩個數字轉換爲整數,最後一個轉換爲double。我怎麼能這樣做呢?
我有一個文本文件,每行包含3個數字。每個數字由一個空格分隔。將字符串轉換爲int和雙精度型
1 1 4.0
當我從文件中讀取該字符串時,我想將前兩個數字轉換爲整數,最後一個轉換爲double。我怎麼能這樣做呢?
您需要首先在空間分割你的字符串,讓每個值作爲一個String數組 單個元素。你將不得不爲此使用String#split
。
現在,迭代你的數組,並檢查每個元素是否包含dot(.)
。
如果它包含一個dot
,將其轉換爲double
,使用Double#valueOf
或Double#parseDouble
如果它不包含dot
,使用Integer#valueOf
或Integer#parseInt
使用這種方法將其轉換爲integer
,您不必擔心存儲您的int
和double
值的順序。
爲例: -
String str = "21.3";
if (str.contains(".")) {
System.out.println(Double.parseDouble(str));
} else {
System.out.println(Integer.parseInt(str));
}
兩種方法的差異在於: -
Integer.parseInt
返回primitive int
,而Integer.valueOf
返回Integer wrapper object
。
我喜歡這個解決方案,因爲它不假定整數和雙精度總是以相同的順序。 – Austin
@奧斯汀。是的。最好預先檢查你的值,而不是稍後再玩例外。 :) –
String [] numbers = "1 1 4.0".split(" ");
int first = Integer.parseInt(numbers[0]);
int second = Integer.parseInt(numbers[1]);
double third = Double.parseDouble(numbers[2]);
這是假設數字將始終以這種形式。
說明
String
的類有一個split
方法,該方法正則表達式作爲參數,「分裂」字符串成結果的數組。然後,您可以使用它們的對象包裝器通過訪問相應的數組值從字符串對象適當地轉換它們,從而使數字實際值爲int
和double
值。
你可以嘗試這樣的:
try {
int posStart = 0;
int posEnd = text.indexOf(" ", posStart);
int firstNumber = Integer.valueOf(text.substring(posStart, posEnd));
posStart = posEnd + 1;
posEnd = text.indexOf(" ", posStart);
int secondNumber = Integer.valueOf(text.substring(posStart, posEnd));
posStart = posEnd + 1;
double thirdNumber = Double.valueOf(text.substring(posStart));
System.out.println(firstNumber + "/" + secondNumber + "/" + thirdNumber);
}
catch (Exception err) {
System.out.println(err.getMessage());
}
在這裏你去:當你鍵入 「字符串轉換在Java詮釋」 在谷歌
String numberSequence = "1 1 4.0";
String[] numbers = numberSequence.split(" ");
for(String no : numbers){
if(no.contains(".")){
Double.parseDouble(no);
}
else{
Integer.parseInt(no);
}
}
會發生什麼?真的嗎? –
其實對於一個新的Java用戶來說,這個真的很有幫助。我不認爲這是一個毫無意義的帖子,因爲它是一個使用.split()函數來解決「使用1個字符串來解析多個整數」的問題。我強烈建議重新打開這篇文章。 – windsound