2014-03-26 76 views
-2

這是我到目前爲止的代碼,它不是編譯...它應該將灰度轉換爲字符映射...我錯過了什麼?有很多錯誤的代碼不知道爲什麼

public char[][] transform(int[][] out) { 
    int row = out[0].length; 
    int column = out[1].length; 
    char[][] mappedImage = new char[row][column]; 
    for (int i= 0; i < row ;i++){ 
     for(int k = 0; k < column ;k++){ 
      if(0<out[i][k]&&out[i][k]<25){ 
       char[i][k] == 'M'; 
      } else if(26<out[i][k]&&out[i][k]<50){ 
       char [i][k] = '$'; 
      } else if(51<out[i][k]&&out[i][k]<76){ 
       char [i][k] = 'o'; 
      } else if(77<out[i][k]&&out[i][k]<102){ 
       char [i][k] = '|'; 
      } else if(103<out[i][k]&&out[i][k]<127){ 
       char [i][k] = '*'; 
      } else if(128<out[i][k]&&out[i][k]<152){ 
       char [i][k] = ':'; 
      } else if(153<out[i][k]&&out[i][k]<178){ 
       char [i][k] = '='; 
      } else if(179<out[i][k]&&out[i][k]<204){ 
       char [i][k] = '\''; 
      } else if(205<out[i][k]&&out[i][k]<230){ 
       char [i][k] = '.'; 
      } else (231<out[i][k]&&out[i][k]<255){ 
       char [i][k] = ' '; 
      } 
     } 
    } 
    return mappedImage; 
} 
+0

發表您的完整代碼.. –

+1

什麼是你所得到的錯誤? –

+1

如果我是一個博彩人,我敢打賭,那些討厭的錯誤消息告訴你到底什麼是錯的。 –

回答

1

與開始...

char[i][k] == 'M' 

我想你的意思

mappedImage[i][k] == 'M' 

基本上,char保留字,不能用作變量名。

然後

mappedImage[i][k] == 'M'; 

應...

mappedImage[i][k] = 'M'; 

==是一個比較運算,你基本上是說確實mappedImage[i][k]等於'M',但與結果,哪個Java做什麼沒有看到有效的聲明

最後...

} else (231<out[i][k]&&out[i][k]<255){ 

} else if (231<out[i][k]&&out[i][k]<255){ 

你錯過了if聲明。 else基本上說,如果沒有別的,做到這一點,但你提供了一個條件後,這是令人困惑的編譯器

+1

我愛那些願意投票回答問題/答案的人的勇氣,但不會提供人們的手段可以學習和/或改進已發佈的內容。任何關於downvote的評論? – MadProgrammer

1

這是你正在嘗試做什麼? 你不能說char [x] [x] = something,或者char [x] [x] ==某事, char是一個數據類型而不是變量。

當爲變量賦值時,需要在右邊有變量名,在「=」符號左邊有值,在你的語句中你沒有任何變量名,只是一個數據類型。

此外,當if/else語句if將條件作爲參數時,否則不會。

public char[][] transform(int[][] out) { 
     int row = out[0].length; 
     int column = out[1].length; 
     char[][] mappedImage = new char[row][column]; 
     for (int i= 0; i < row ;i++){ 
      for(int k = 0; k < column ;k++){ 
       if(0<out[i][k]&&out[i][k]<25){ 
        mappedImage[i][k] = 'M'; 
       } else if(26<out[i][k]&&out[i][k]<50){ 
        mappedImage [i][k] = '$'; 
       } else if(51<out[i][k]&&out[i][k]<76){ 
        mappedImage [i][k] = 'o'; 
       } else if(77<out[i][k]&&out[i][k]<102){ 
        mappedImage [i][k] = '|'; 
       } else if(103<out[i][k]&&out[i][k]<127){ 
        mappedImage [i][k] = '*'; 
       } else if(128<out[i][k]&&out[i][k]<152){ 
        mappedImage [i][k] = ':'; 
       } else if(153<out[i][k]&&out[i][k]<178){ 
        mappedImage [i][k] = '='; 
       } else if(179<out[i][k]&&out[i][k]<204){ 
        mappedImage [i][k] = '\''; 
       } else if(205<out[i][k]&&out[i][k]<230){ 
        mappedImage [i][k] = '.'; 
       } else if(231<out[i][k]&&out[i][k]<255){ 
        mappedImage [i][k] = ' '; 
       }else{ 
        //TODO whatever goes here 
       } 
      } 
     } 
     return mappedImage; 
    } 

將其打印出來,你需要這樣的事:

for(int i =0; i < row; i++){ 
    for(int j =0; j < column; j++){ 
      System.out.println("row is: " +mappedImage[i] + "col is: " + mappedImage[j]); 
    } 
} 
+0

感謝,使更多的意義....如果我想打印這個主要方法,然後它的只是System.out.println(mappedImage);正確? – user3461630

+0

@ user3461630我想你會發現'System.out.println(Arrays.toString(...))'更有用。並且記住'mappedImage'對'transform'方法有本地上下文,所以除非你從'transform'方法分配了返回值,否則你可能得不到你期望的結果。 – MadProgrammer

+0

mappedImage是一個二維數組,你不能打印整個數組一次,你需要通過使用for循環並分別打印每個元素。 所以你需要一個for循環迭代第一個維度,第二個循環遍歷第二個維度。 也只是在stackExchange上的一個筆記,你投票的人與你覺得有用的答案,和你投票的答案是誤導。 :) – MrHaze

相關問題