我有一个文本文件,其中包含多行,每行包含3个数字。每个数字用空格分隔。
1 1 4.0
当我从文件中读取此字符串时,我想将前两个数字转换为整数,最后一个转换为double。我怎么能这样做呢?
答案 0 :(得分:5)
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
值。
答案 1 :(得分:2)
您需要先在空格上拆分字符串,以获取每个值
String数组中的单个元素。您必须使用String#split
。
现在,遍历您的数组,并为每个元素检查它是否包含dot(.)
。
如果它包含dot
,请使用Double#valueOf
或Double#parseDouble
double
如果它不包含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
。
答案 2 :(得分:0)
您可以尝试以下内容:
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());
}
答案 3 :(得分:0)
你走了:
String numberSequence = "1 1 4.0";
String[] numbers = numberSequence.split(" ");
for(String no : numbers){
if(no.contains(".")){
Double.parseDouble(no);
}
else{
Integer.parseInt(no);
}
}