1

请注意,我是 Java 新手。我有一个类,这个类中有一个方法计算一些值,我想在第一类中返回它们。我有一个代码,但它返回 0。

那是在计算值的类

public class ImageProcessing{
int i,j;
int R[][]=new int[640][320];
int G[][]=new int[640][320];
int B[][]=new int[640][320];


public double meanR[]=new double[320];
public double meanG[]=new double[320];
public double meanB[]=new double[320];
public double varianceR[]=new double[320];
public double varianceG[]=new double[320];
public double varianceB[]=new double[320];
public double skewnessR[]=new double[320];
public double skewnessG[]=new double[320];
public double skewnessB[]=new double[320];

public double round(double value){
    //  int decimalPlace = 2;

    BigDecimal bd = new BigDecimal(value);
    bd = bd.setScale(2,BigDecimal.ROUND_UP);
    return (bd.doubleValue());
}

public void Mean(Bitmap image){

    int width = image.getWidth();
    int height = image.getHeight();
    int pixel = 0;


    for (i=0; i<width;i++){
        for (j=0; j<height; j++){
            pixel = image.getPixel(i,j);
            R[i][j] = Color.red(pixel);
            G[i][j]= Color.green(pixel);
            B[i][j] = Color.blue(pixel);


            meanR[j]=meanR[j]+R[i][j];
            meanG[j]=meanG[j]+G[i][j];
            meanB[j]=meanB[j]+B[i][j];
        }
    }

在主要课程中,我有:

    method.Mean(rescaledBitmap1);

    meanR1=method.meanR;
    meanG1=method.meanG;
    meanB1=method.meanB;
    System.out.println(meanR1);
4

2 回答 2

1

您必须在方法的定义中指定要返回的内容,并使用关键字实际返回一个值return

public int sum(int a, int b){
 int result = a + b;
 return result;
}

您已声明Mean()为 void public void Mean(Bitmap image),因此它不返回任何值。

此外,您只能返回 1 个变量,因此您应该将这 3 个值放在某种数组中,或者创建一个新类并将变量封装在一个对象中。这是一个例子:

public class MeanResult(){
private double meanR[]=new double[320];
private double meanG[]=new double[320];
private double meanB[]=new double[320];
//Maybe declare more stuff here

 public MeanResult(Bitmap image){
  //... code n stuff here to calculate width, height and pixel
 }
 public double getMeanR(){ return this.meanR[]; }
 public double getMeanG(){ return this.meanG[]; }
 public double getMeanB(){ return this.meanB[]; }
}

你可以像这样使用它:

MeanResult mean = new MeanResult(image);
meanR1=mean.getMeanR();
meanG1=mean.getMeanG();
meanB1=mean.getMeanB();
于 2013-06-16T16:34:41.023 回答
0

方法mean(Bitmap image)void。为了让它返回一些东西,你必须改变它将返回的东西void,并在方法的最后return改变变量。

例子:

public int add(int x, int y)
{
    return x + y;
}

然后,如果您调用add(1,2)它,它将具有 3 的值。

于 2013-06-16T16:35:43.310 回答