有很多错误的代码不确定原因

时间:2014-03-26 05:14:58

标签: java

这是我到目前为止的代码并且它没有编译......它应该将灰度转换为字符映射...我缺少什么?

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; 
}

2 个答案:

答案 0 :(得分: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 :(得分:1)

这是你想要做的吗? 你不能说char [x] [x] =某事,或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]);
    }
}