我坚持这个非常愚蠢的事情;
我有一个像这样的文本文件;
您好:: 140.0 ::再见
我使用;
将其拆分为字符串数组LS = line.split("::");
然后我尝试将包含数字的数组值转换为double,就像这样;
Double number = Double.parseDouble(LS[1]);
但是我收到以下错误消息;
线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 1
有谁知道为什么这不起作用?
答案 0 :(得分:4)
我认为阅读文件存在问题。你在分裂后尝试打印线还是LS的内容吗?
答案 1 :(得分:4)
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);
}
}
}
答案 2 :(得分:2)
该错误与该行代码无关。寻找您尝试访问数组索引3的地方。此示例中的LS应仅包含索引0-2。
答案 3 :(得分:1)
我认为某些行不包含指定格式的数据。该文件是否包含空行?在这种情况下,split只返回单元素数组。要找到问题,您可以打印发生错误的行(数据)。
答案 4 :(得分:0)
什么类型的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);
}
}
答案 5 :(得分:0)
您应该使用编译器,例如Eclipse,它允许您动态调试代码。这里的问题是Array LS的大小<= 1。这可能是由于Halo提到的文本文件读取不正确或Mnementh提到空行而引起的。对于任何不包含:: delimiter的行,都会发生这种情况。
您应该执行检查以确保Array LS包含&gt; X条目,尤其是当您从条目可能不同的文件中读入时。
double number = 0.0
if( LS.size() > 3 ){
number = Double.parseDouble(LS[1]);
}
答案 6 :(得分:0)
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));
}
}
}
答案 7 :(得分:0)
objTwo.pSelf = types.MethodType(objOne.pSelf.__func__, objTwo)