循环方法中缺少return语句

时间:2013-11-06 10:58:14

标签: java loops if-statement return-value

这是我的代码:

//method to rotate the picture
public static Picture modifyPicture (Picture p, int value)
{
 // get width and height of the picture
 int width = p.getWidth();
 int height = p.getHeight();
 System.out.println ("Picture has width of " + width + 
                     " and height of " + height);
 if (value == 1)
 {
  Picture p2 = new Picture (height, width);

  int x = -1;
  int y = -1;

  for  ( x = 0 ; x < width ;  ++x )
  {
   for ( y = 0 ; y < height ; ++y )
   {
     // access the original pixel
     Pixel pixel1 = p.getPixel (x, y);
     Color c1 = pixel1.getColor();

     // access the pixel to modify
     int modifyXPos = (height-1)-y;
     int modifyYPos = x;
     Pixel pixel4 = p2.getPixel (modifyXPos, modifyYPos);
     pixel4.setColor( c1 );
   }
  }
  return p2;
 }
 else if (value == 2)
 {
  Picture p2 = new Picture ( width , height);

  int x = -1;
  int y = -1;

  for  ( x = 0 ; x < width ;  ++x )
  {
   for ( y = 0 ; y < height ; ++y )
   {
     // access the original pixel
     Pixel pixel1 = p.getPixel (x, y);
     Color c1 = pixel1.getColor();

     // access the pixel to modify
     int modifyXPos = x;
     int modifyYPos = (height-1) - y;
     Pixel pixel4 = p2.getPixel (modifyXPos, modifyYPos);
     pixel4.setColor( c1 );
   }
  }
  return p2;
 }
 else
 {
  System.out.println ("Value out of range");
 }
}

} //班级的结尾

所以在第二个到最后一个分号我得到错误“缺少返回语句”,我理解为什么。我只是不知道如何解决它。在“if”语句之前重写Picture p2等是没用的,因为坐标必须改变,所以除此之外,我不知道如何在最后放置一个return语句。请帮忙,谢谢你的时间和答案!

5 个答案:

答案 0 :(得分:0)

它说缺少return语句,因为你的方法名称

public static Picture modifyPicture (Picture p, int value)

说你要返回一个Picture对象,但你不属于“其他”案例,

else
{
   System.out.println ("Value out of range");
   return null;     // Notice this
}

因此在那里添加一个返回语句

答案 1 :(得分:0)

如果您答应返回Picture,则必须返回Picture或抛出异常。

在方法结束时,您可以添加

return null;

或者你可以在那时抛出异常。

throw new IllegalArgumentException("Value out of range");

如果您对异常一无所知,请使用return null,然后阅读Java中的异常和错误处理。

答案 2 :(得分:0)

请在else循环

中添加一个return语句

答案 3 :(得分:0)

嘿,你错过了其他块的return语句。如果满足No条件,则不返回任何内容。包括在else块中返回。

尝试返回空对象。

答案 4 :(得分:0)

如果绝对需要改变坐标,那么你的第一个代码块必须被执行而'else'分支永远不会被触发,对吧? 然后,在else子句中抛出一个argumentException。或者,或许更好,删除ELSE并通过抛出ArgumentException结束函数。