2016-01-06 122 views
-1

这组代码产生了由于无限递归导致的堆栈溢出错误(至少我认为是这样)。我一直在盯着这段代码很长一段时间,不知道错误发生在哪里。如果有人能够帮助指出我为什么会遇到这样的错误,那就太好了。代码中的堆栈溢出错误

public void DrawValues(Graphics g, Graphics2D g2, int x, int y, int a, int b){ 
     if (b>8){ 
      b = 0; 
      a++; 
      x = 61; 
      y+=66; 
     } 
     if (a==8 && b==8){ 
      g.drawString(String.valueOf(Solver.Rows[a][b]), x, y); 
     } 
     else{ 
      g.drawString(String.valueOf(Solver.Rows[a][b]), x, y); 
      DrawValues(g,g2, x+66, y, a, b++); 
     } 
    } 

它可能会帮助声明,排在0

+1

你不会在任何地方你的代码改变'B',你需要'B'等于'8'为您的代码来完成。 –

回答

0

一个9x9的二维数组a和b的开始。这是因为你使用后的增量(B +)而不是预增(+ + b)当您递归调用DrawValues方法时。如果使用后增量,则在调用方法后,参数将增加。因此,在你的情况下,变量b永远不会改变。

这样,你应该使用预增:

... 
DrawValues(g,g2, x+66, y, a, ++b); 
... 
+0

非常感谢,工作! – AntonioK

+0

@AntonioK欢迎您 –