2014-03-19 26 views
2

要运行一个算法,我需要使用一个文本文件作为输入。 输入示例:解析文本以加倍数组

105.0,45.0,22.0
240.0,3.0,50.0
4344.0,4.0,55.0

在算法我需要计算每一行彼此(第一行本身是第二排和第三排,第二排是第一排,本身和第三排,第三排是第一排,第二排和本身)。输出是一个距离矩阵,双值(输入*输入矩阵所以在这种情况下,一个3×3矩阵)

到目前为止,我的代码如下所示:

public class Distance{ 

public static double calcDist(int dim, double[] x, double[] y) { 
//do computation here 
//output printed here 
} 

public static void main(String[] args) throws IOException { 

String str; 
String inputX; 
String inputY; 
double arrayX = 0; 
double arrayY = 0; 
BufferedReader in = new BufferedReader(new FileReader("C:/input.txt")); 


List<String> list = new ArrayList<String>(); 

while((str = in.readLine()) != null){ 
     list.add(str); 
} 


for(int i=0; i < list.size(); i++){ 
    for(int j=0; j < list.size(); j++){ 

     inputX = list.get(i); 
     arrayX = Double.parseDouble(inputX); 

     inputY = list.get(j); 
     arrayY = Double.parseDouble(inputY); 

     double[] x = {arrayX}; 
     double[] y = {arrayY}; 

    calcDist(x.length,x,y); 
    } 

} 

的距离的方法对自己的罚款运行,但我收到主要的各种错误。 Numberformatexceptions。我猜应该在解析的某个地方。帮助赞赏。 在此先感谢!

+2

'应该对我guess'解析的地方 - 不你的编译器给你的违规行数? – devnull

+0

此外,你期望什么试图解析'105.0,45.0,22.0'为双? – devnull

+0

如果将所有行读入'String []',是否有任何理由不使用[适用于JDK的方法](http://docs.oracle.com/javase/7/docs/api/java /nio/file/Files.html#readAllLines(java.nio.file.Path,%20java.nio.charset.Charset))?此外,为什么要将一个完美的'List'复制到数组中才能遍历它?最后,你在哪里分裂','?还有一件事,在String中调用'toString'是什么? –

回答

1

您的inputX = stringArr[i].toString();显然是0或某些无法解析为Double。请检查并设置一些,如果条件存在,如果它使雅感..

希望帮助