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);
    }
}

显示错误堆栈跟踪pls
public static int[]getRGBA(buffereImage img,int x,int y){int[]color=new int[4];int[]originalPixel=getRGBA(img,x,y)这将永远循环。你必须找到另一种方法来做你想做的事情。我想克服这个错误以及如何克服这个问题。我必须匹配像素,如果像素值匹配,我将更改像素值。@Sheela Kannan:这是非常基本的东西。虚拟机甚至会告诉你问题在哪里。可能是他lpful如果你让每个人都知道你的编程经验是什么。你明白这些人说“无限递归”或“无限调用自己”的意思吗?我知道无限递归。但问题是这段代码无论如何都可以简化?所以告诉我克服这个问题