2012-09-20 68 views
0

我正在研究一個項目,它將對圖像做一個簡單對比,我已經掃描了數組以查找最小值和最大值但現在我必須繪製圖像。運算符*未定義爲參數類型[] []數組,雙精度

我不斷收到此錯誤「運算符*未定義的參數類型drawingpanel,雙」

這裏是代碼

public void simple (Graphics g) { 
    if (DrawingPanel.imageArray != null) { 
     int width = getWidth(); 
     int height = getHeight(); 
     int hPos = (width - DrawingPanel.imageArray[0].length)/2; 
     int vPos = (height - DrawingPanel.imageArray.length)/2; 
     for (int r = 0; r < DrawingPanel.imageArray.length; r++) 
      for (int c = 0; c < DrawingPanel.imageArray[r].length; c++) { 
       newc = Math.round(maxshade * ((double)(DrawingPanel.imageArray[r][c] - minshade)/(maxedshade - minshade))); //error here!!! 
       g.setColor(new Color(DrawingPanel.imageArray[r][c], DrawingPanel.imageArray[r][c], DrawingPanel.imageArray[r][c])); 
       g.drawLine(c+hPos, r+vPos, c+hPos, r+vPos);      
      } 
     g.setColor(Color.black); 
     g.drawRect(hPos, vPos, DrawingPanel.imageArray[0].length, DrawingPanel.imageArray.length);     
} 

}

任何幫助將是讚賞..謝謝!

也這是我計算我的分馬克塞斯...

public static void computeImageStatistics(DrawingPanel array) { 
     DrawingPanel.array = carray; 
      maxedshade = carray[0][0];  
      for (int i = 0; i < carray.length; i++) { 
       for (int j = 0; j < carray[i].length; j++) { 
       if (carray[i][j] > maxedshade) { 
        maxedshade = carray[i][j]; 
       } 
       } 
      } 
      minshade = carray[0][0];  
      for (int i = 0; i < carray.length; i++) { 
       for (int j = 0; j < carray[i].length; j++) { 
       if (minshade > carray[i][j]) { 
        minshade = carray[i][j]; 
       } 
    } 
      } 
    } 

在我DrawingPanel其他一些變量..

 public void showImage(File fileName) { 
     Scanner scan; 
     try { 
      scan = new Scanner(fileName); 
      typefile = scan.next(); 
      iname = scan.next();  
      width = scan.nextInt(); 
      height = scan.nextInt(); 
      maxshade = scan.nextInt(); 
      array = new int[width][height]; 

      for(int r = 0; r < array.length; r++) 
       for(int c = 0; c < array[r].length; c++) 
        array[r][c] = scan.nextInt(); 
      imageArray = array; 
      repaint();    
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 

} 
+1

maxshade定義在哪裏? – templatetypedef

+0

類似問題http://stackoverflow.com/questions/9237946/the-operator-is-undefined-for-the-argument-types-double-edittext –

回答

1

錯誤味精告訴您無法使用運營商*'在maxshade((double)(DrawingPanel.imageArray[r][c] - minshade)/(maxedshade - minshade))之間。因爲maxshade是DrawingPanel的類型,不是數字(double/long/float/int ...)。

當我看着你的第二代碼塊,我看到一個靜態變量名稱maxedshade。它看起來像一個數字。

然後我看着你的錯誤行:

newc = Math.round(maxshade * ((double)(DrawingPanel.imageArray[r][c] - minshade)/(maxedshade - minshade))); //error here!!! 

你有沒有做對 「maxshade」 一個輸入錯誤?應該是maxedshade

相關問題