【发布时间】:2013-12-31 14:11:06
【问题描述】:
我正在为我的科学博览会项目制作一个魔方模拟器,但遇到了一些麻烦。此代码应该通过在 sideValues[] 数组中设置不同的颜色值来随机化立方体。这并不复杂,但它总是让我的电脑死机。 (顺便说一下,method1、method2 和 method 3 是 JLabels,计数器整数是为了确保每种颜色不超过 9 个,drawAndButtons 是 JPanel 立方体显示在,而 cubeSpace 是 JPanel drawAndButtons 开启。)
method1.setForeground(Color.red);
method2.setForeground(Color.black);
method3.setForeground(Color.black);
for(int h = 1; h <= 54; h++)
{
do
{
transfer = generator.nextInt(6) + 1;
switch(transfer)
{
case 1:
numy++;
case 2:
numb++;
case 3:
numo++;
case 4:
numg++;
case 5:
numr++;
case 6:
numw++;
default:
}
if(numy > 9 || numb > 9 || numo > 9 || numg > 9 || numr > 9 || numw > 9)
{
rightAmount = false;
switch(transfer)
{
case 1:
numy--;
case 2:
numb--;
case 3:
numo--;
case 4:
numg--;
case 5:
numr--;
case 6:
numw--;
default:
}
}
else
{
sideValues[h] = transfer;
rightAmount = true;
}
}while(rightAmount == false);
}
drawAndButtons.add(new graphics());
cubeSpace.repaint();
methodValue = 3;
numy = 0;
numb = 0;
numo = 0;
numg = 0;
numr = 0;
numw = 0;
}
【问题讨论】:
-
1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2)(但基于预感..)不要阻塞 EDT(事件调度线程)——当这种情况发生时,GUI 将“冻结”。而不是调用
Thread.sleep(n)实现一个摆动Timer用于重复任务或SwingWorker用于长时间运行的任务。有关详细信息,请参阅Concurrency in Swing。 -
等一下,在所有奇迹都解决后添加一个休息时间:)
-
为什么您的
switch中没有任何break;? -
@sᴜʀᴇsʜᴀᴛᴛᴀ 我的双胞胎.....终于找到你了!
-
在任何情况下都必须使用
break;