2012-02-13 42 views
0

我是新来的Java,并试图编写一个程序.. 这里是代码。在功能降低时数= 14,程序卡住...... PLZ让我知道我做错了..java程序卡住了....我想我没有正确处理字符串对象

public static class MerkleReducer extends MapReduceBase 
implements Reducer<LongWritable, Text, LongWritable, Text> { 

static String[][] sarray = new String[5][14]; 
    static int count = 0; 

private void MerkleReducer() { 
    for (int i=0;i<5;i++) 
     for (int j=0; j<14;j++) 
      sarray[i][j] += ""; 
} 

public void reduce(LongWritable key, Iterator<Text> values 
    OutputCollector<LongWritable, Text> output, Reporter reporter) throws IOException { 

    count++; 
    Text hashval = new Text(); 
    while (values.hasNext()) { 
      hashval = values.next(); 
    } 
    sarray[0][(int)key.get()] += hashval.toString(); 
    if (count == 14) { 
     for (int i=1; i<5; i++) { 
     for (int j=0; j<7; j = j++) { 
      int k = 2 * j; 
      String hashv= new String(); 
      if ("".equals(sarray[i-1][k])) { 
       break; 
      } 
      if ("".equals(sarray[i-1][k+1])) { 
       sarray[i][j] = sarray[i-1][k]; 
       break; 
      } 
      hashv += sarray[i-1][k] + sarray[i-1][k+1]; 
      sarray[i][j] += hashv; 

     } 
     } 
     output.collect(key, new Text(sarray[3][0])); 

    } else { 
     output.collect(key, new Text(hashval.toString())); 
    } 

}}

+0

它在哪里“卡住”? – 2012-02-13 00:22:12

回答

3

j = j++意味着j永远不会改变,它会取当前值j,增量为j,然后将旧值重新分配到j

2

for (int j=0; j<7; j = j++) {

j = j++气味类似于无穷大。

+0

Ahh.yes ....不能相信这是一个愚蠢的错误......它最麻烦的最小的错误...我试图解决这个问题,因为过去3-4小时:D ...谢谢快速响应...程序运行良好。 :) – Ragit 2012-02-13 00:32:45