Java 当我运行这段代码时,我得到了stackOverflow错误
我必须得到这些值,我必须匹配图像中的像素值。但是当我运行这段代码时,我得到了Java 当我运行这段代码时,我得到了stackOverflow错误,java,image-processing,stack-overflow,Java,Image Processing,Stack Overflow,我必须得到这些值,我必须匹配图像中的像素值。但是当我运行这段代码时,我得到了StackOverflowError 如何在java中增加堆栈内存来克服这个问题 公共类ImageToText{ 私人最终intα=24; 私人最终int RED=16; 私人最终整数绿色=8; 私有最终整数蓝色=0; 公共静态void main(字符串args[])引发IOException{ File File=新文件(“C:\\image.jpg”); BuffereImage image=ImageIO.read
StackOverflowError
如何在java中增加堆栈内存来克服这个问题
公共类ImageToText{
私人最终intα=24;
私人最终int RED=16;
私人最终整数绿色=8;
私有最终整数蓝色=0;
公共静态void main(字符串args[])引发IOException{
File File=新文件(“C:\\image.jpg”);
BuffereImage image=ImageIO.read(文件);
int color21=image.getHeight();
int color31=image.getWidth();
getRGBA(图像,颜色31,颜色21);
对于(int i=0;i 对于(int i=0;igetRGBA,它会无限地调用自己:
public static int[] getRGBA(BufferedImage img, int x, int y)
{
int[] color = new int[4];
int[] originalPixel = getRGBA(img,x,y);
这种情况会导致堆栈溢出错误
考虑添加递归的基本情况,这样您的代码就不会总是调用自身并有“出路”。函数getRGBA中的这一行:
int[] originalPixel = getRGBA(img,x,y);
这应该会导致无限递归。从main
方法调用下面的getRGBA
方法。在getRGBA
方法内,再次调用该方法。这会使循环/递归执行不带退出条件
public static int[] getRGBA(BufferedImage img, int x, int y) {
int[] color = new int[4];
int[] originalPixel = getRGBA(img,x,y);
}
您必须在方法调用周围添加一些条件,以便递归执行停止。您的功能不够清晰,无法建议可以设置什么条件
public static int[] getRGBA(BufferedImage img, int x, int y) {
int[] color = new int[4];
if (some condition which becomes true) {
int[] originalPixel = getRGBA(img,x,y);
}
}
显示错误堆栈跟踪plspublic static int[]getRGBA(buffereImage img,int x,int y){int[]color=new int[4];int[]originalPixel=getRGBA(img,x,y)这将永远循环。你必须找到另一种方法来做你想做的事情。我想克服这个错误以及如何克服这个问题。我必须匹配像素,如果像素值匹配,我将更改像素值。@Sheela Kannan:这是非常基本的东西。虚拟机甚至会告诉你问题在哪里。可能是他lpful如果你让每个人都知道你的编程经验是什么。你明白这些人说“无限递归”或“无限调用自己”的意思吗?我知道无限递归。但问题是这段代码无论如何都可以简化?所以告诉我克服这个问题