gpt4 book ai didi

java.lang.StackOverflowError 导致我的应用出现问题

转载 作者:行者123 更新时间:2023-11-30 04:10:39 25 4
gpt4 key购买 nike

我的应用程序有问题,我无法弄清楚问题出在哪里。在 ICS 上,该应用程序可以运行,但在任何 2.X 上它都有问题。我相信这与循环有关,但我仍然有点困惑。

开发者控制台向我抛出错误报告:

Exception class > java.lang.StackOverflowError
Source method > Matrix.setScale()

这是导致问题的代码...

private void shiftLoop7()
{
if (d7 != doy && d7 < 366)
{
d7 = d7 + 8;
shiftLoop7();
}
else if(d7 == doy)
{

if (hour >= 0 && hour < 8)
{
shift.setText("C");
shift.setTextAppearance(getApplicationContext(), R.style.CShift);

shiftImage.setImageResource(R.drawable.c);
timeTill.setText("till 7:45 AM");

dayshift.setText("A Shift");
day1.setBackgroundResource(R.color.A);
day2.setBackgroundResource(R.color.A);
day3.setBackgroundResource(R.color.A);
day4.setBackgroundResource(R.color.A);

nightshift.setText("C Shift");
night1.setBackgroundResource(R.color.C);
night2.setBackgroundResource(R.color.C);
night3.setBackgroundResource(R.color.C);
night4.setBackgroundResource(R.color.C);
}
else if (hour >= 8 && hour < 17)
{
shift.setText("A");
shift.setTextAppearance(getApplicationContext(), R.style.AShift);

shiftImage.setImageResource(R.drawable.a);
timeTill.setText("till 4:45 PM");

dayshift.setText("A Shift");
day1.setBackgroundResource(R.color.A);
day2.setBackgroundResource(R.color.A);
day3.setBackgroundResource(R.color.A);
day4.setBackgroundResource(R.color.A);

nightshift.setText("C Shift");
night1.setBackgroundResource(R.color.C);
night2.setBackgroundResource(R.color.C);
night3.setBackgroundResource(R.color.C);
night4.setBackgroundResource(R.color.C);
}
else
{
shift.setText("C");
shift.setTextAppearance(getApplicationContext(), R.style.CShift);

shiftImage.setImageResource(R.drawable.c);
timeTill.setText("till 7:45 AM");

dayshift.setText("A Shift");
day1.setBackgroundResource(R.color.A);
day2.setBackgroundResource(R.color.A);
day3.setBackgroundResource(R.color.A);
day4.setBackgroundResource(R.color.A);

nightshift.setText("C Shift");
night1.setBackgroundResource(R.color.C);
night2.setBackgroundResource(R.color.C);
night3.setBackgroundResource(R.color.C);
night4.setBackgroundResource(R.color.C);
}
}
else
{
shiftLoop8();
}
}

最佳答案

堆栈溢出的一个常见原因是大量的递归调用 - 要么是由于导致无限递归的错误,要么是代码的结构具有非常深的递归。

在您的情况下,堆栈溢出可能是由于您的代码有可能进行相当大深度的递归调用。您能否将递归调用重组为 while 循环?例如,而不是:

if (d7 != doy && d7 < 366)
{
d7 = d7 + 8;
shiftLoop7();
}

你能不能做到以下几点:

while (d7 != doy && d7 < 366)
{
d7 = d7 + 8;
}

关于java.lang.StackOverflowError 导致我的应用出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10907788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com