这是我的代码:
//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语句。请帮忙,谢谢你的时间和答案!
答案 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
循环
答案 3 :(得分:0)
嘿,你错过了其他块的return语句。如果满足No条件,则不返回任何内容。包括在else块中返回。
尝试返回空对象。
答案 4 :(得分:0)
如果绝对需要改变坐标,那么你的第一个代码块必须被执行而'else'分支永远不会被触发,对吧? 然后,在else子句中抛出一个argumentException。或者,或许更好,删除ELSE并通过抛出ArgumentException结束函数。