2014-01-30 103 views
0

我想要在地圖上顯示帶有繪製線條的圖像,併爲圖像中的每個單獨部分(幾條連接線)分隔圖像。我寫了這個代碼:返回值時不兼容的類型

public BufferedImage getLineImage() { 
    BufferedImage lineImage = null; 
    BufferedImage lineImage1[]=null; 
    int i=0; 

    if(image != null) { 
     lineImage1[i] = new BufferedImage(image.getWidth(), image.getHeight(),        image.getType()); 

     lineImage = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); 

     Graphics2D g1 = lineImage1[i].createGraphics(); 
     Graphics2D g = lineImage.createGraphics(); 

     g.setColor(Color.WHITE); 
     g.setStroke(new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); 

     g1.setColor(Color.WHITE); 
     g1.setStroke(new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); 

     for(Section section : observeTraffic) { 
      section.paintTags(g1); 
      i++; 
     } 
     for(Section section : observeTraffic) { 
      section.paintTags(g); 
     } 
    } 

    return lineImage; 
    return lineImage1; 
} 

,但在最後一排,我得到錯誤:不兼容的類型

的java:不兼容的類型 要求:java.awt.image.BufferedImage中 發現:java.awt.image中.BufferedImage []

任何人都可以幫助我嗎?

感謝

+0

難道你不明白有關該錯誤信息是什麼? –

+1

你有兩個返回語句,一個返回一個BufferedImage,另一個返回一個BufferedImages數組;該方法聲明它只返回一個BufferedImage ...並且您想知道編譯器爲什麼會感到困惑... – MadProgrammer

+0

該方法的返回類型是BufferedImage

回答

0

方法的返回類型爲BufferedImage的
但你試圖返回BufferedImage的陣列。那是你的錯誤發生。
順便說一句:你真的有2個返回語句?

1

lineImage1定義爲BufferedImage lineImage1[],它是一個BufferedImages數組。該方法的返回值是BufferedImage

您要麼將返回類型更改爲BufferedImage的數組,要麼只返回一個BufferedImage

+0

它不是 - 或者。兩個順序返回語句是編譯時錯誤([unreachable statement error](http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.21)) – MByD

+0

那麼,編譯器不喜歡錯誤匹配的返回值。一旦解決了,你是對的,兩個'return'語句也是一個問題。 – clay

0

有些人可能會覺得困惑時,他們不知道

BufferedImage lineImage1[] = null; 

相同

BufferedImage[] lineImage1 = null; 

,你不能有兩個返回時,它在Java中是非法的。

所以,如果你想返回多個對象,你可以這樣做

public Object[] getLineImage() { 
(...) 
    Object[] o = new Object[2]; 
    o[0]=lineImage; 
    o[1]=lineImage1; 
    return o; 
} 
+0

非常感謝所有幫助過我的人 – user3186565