程序没有输出(预期408行),没有编译或运行时错误

时间:2015-11-09 04:30:04

标签: java

我想使用DynamicTimeWarping(DTW)的输出进行分类。事实证明,动态时间规整算法的输出仍然需要后处理。作为时间对齐过程的一部分,数据A的某些单个数据点将映射到数据B上的多个数据点。我计划将数据A上的这些数据点的平均值映射到单个数据点到数据B.最终输出将是针对相似性优化的数据之间的一对一映射数据点。然后我将使用此最终输出进行分类。

输入将是一个文件:(索引数据A,索引数据B,内容数据A)如下所示:

0,0,0.36
1,0,0.23
2,0,0.14
3,1,0.41
4,1,0.44
5,2,0.16
6,2,0.03
7,2,0.09

以下是我目前的代码:

import java.util.*;

public class dtw_post {


    public static void main(String[] args) throws Exception {
        Scanner scan = new Scanner(System.in);
        int N = 655;
        int x = 408;
        while(scan.hasNextLine()){
        String line =scan.nextLine();
        String[] lineVector = line.split(",");

        int a[] = new int[N];
        int b[] = new int[N];
        double c[] = new double[x];


        for(int i = 0; i<N; i++)
        {
        a[i]=Integer.parseInt(lineVector[0]);
        b[i]=Integer.parseInt(lineVector[1]);   
        }

        for(int i = 0; i<x; i++){
        c[i]=Double.parseDouble(lineVector[2]);
        }

        System.out.println(dtw_post.lookup(a,b,c));}
        }

    static String[] lookup (int[] a, int[] b, double[] c){

        String[] final_result = new String[c.length];
        for(int i=0; i<a.length; i++){

        if (a[i+1] > a[i] && b[i] == b[i+1]) {
            double[] d = {c[a[i]],c[a[i+1]]};
            double e = average(d);
            final_result[i] = Double.toString(e); 
        }

        else {
            final_result[i] = Double.toString(c[a[i]]);
        }}
        return final_result;
    }

    static double average(double[] data) {
        double sum = 0;
        int number = 0;
        for (double val : data) {
            ++number;
            sum += val;
        }
        return sum / number;
    }

}

程序没有输出(预期408行),没有编译或运行时错误。命令行中的光标只是闪烁。感谢您抽出时间帮助我。

1 个答案:

答案 0 :(得分:1)

您的程序正在等待来自命令行的输入,因为您已为Scanner流创建了System.in。你需要从中读取文件。

File file = new File("fileName");

  Scanner scannerFile = new Scanner(file);

 while(scannerFile.hasNextLine()){
        String line = scannerFile.nextLine();
        String[] lineVector = line.split(",");

  }