[英]Java - converting String in array to double
我被這個非常愚蠢的東西困住了;
我得到了這樣的文本文件;
你好:: 140.0 ::再見
我用它將它分成一個字符串數組;
LS = line.split("::");
然后我嘗試將包含數字的數組值轉換為double,就像這樣;
Double number = Double.parseDouble(LS[1]);
但是我收到以下錯誤消息;
線程“main”中的異常java.lang.ArrayIndexOutOfBoundsException:1
有誰知道為什么這不起作用?
public class Test
{
public static void main(String[] args)
{
String s = "140.0::156.33::155.89";
String[] ls;
ls = s.split("::");
for(int i=0;i<=2;i++)
{
//System.out.println(ls[i]);
double d = Double.parseDouble(ls[i]);
System.out.println(d);
}
}
}
我認為這是閱讀文件的問題。 你在分裂后嘗試打印線還是LS的內容嗎?
該錯誤與該行代碼無關。 尋找您嘗試訪問數組索引3的地方。 此示例中的LS應僅包含索引0-2。
我認為某些行不包含指定格式的數據。 該文件是否包含空行? 在這種情況下,split只返回單元素數組。 要找到問題,您可以打印發生錯誤的行(數據)。
import java.util.ArrayList;
import java.util.Arrays;
public class StringToDoubles {
/**
* @param args
*/
public static void main(String[] args)
{
String CommaSeparated = "22.3 , 24.5, 44.3";
java.util.List<String> items = Arrays.asList(CommaSeparated.split("\\s*,\\s*"));
java.util.List<Double> out = new ArrayList<Double>();
for(int i=0; i < items.size();i++)
{
double d = Double.parseDouble(items.get(i));
System.out.println(d);
out.add(new Double(d));
}
}
}
什么類型的LS? 這段代碼適合我:
public class Test
{
public static void main(String[] args)
{
String s = "Hello::140.0::Bye";
String[] ls;
ls = s.split("::");
System.out.println(ls[1]);
double d = Double.parseDouble(ls[1]);
System.out.println(d);
}
}
您應該使用Eclipse等編譯器,它允許您動態調試代碼。 這里的問題是Array LS的大小<= 1。 這可能是由於Halo提到的文本文件讀取不正確或Mnementh提到空行而引起的。 對於任何不包含:: delimiter的行,都會發生這種情況。
您應該執行檢查以確保Array LS包含> X條目,尤其是當您從條目可能不同的文件中讀入時。
double number = 0.0
if( LS.size() > 3 ){
number = Double.parseDouble(LS[1]);
}
//Using streams provides a neat solution.
// this will give you {1.3, 3.5, 98.342}
String input = "1.3::3.5::98.342";
double[] arr = Arrays.stream(input.split("::")).mapToDouble(Double::parseDouble).toArray();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.