我在实现MouseListener的类中有以下嵌套类:
public void plusOne()
{
int reference = 0;
int status = 0;
System.out.println("BEGIN");
System.out.println(dateArray[reference].selected);
while (dateArray[reference].selected = false)
{
reference++;
System.out.println("SUCCESS");
}
while (dateArray[reference].selected = true)
{
reference++;
}
while (true)
{
if (dateArray[reference].status == 2)
{
dateArray[reference].status =1;
status =2;
break;
}
if (dateArray[reference].status == 3)
{
dateArray[reference].status =0;
status = 3;
break;
}
dateArray[reference].selected = true;
reference++;
dateArray[reference].status = status;
}
}
执行System.out.prinln(“BEGIN”)。 System.out.prinln(dateArray [reference] .selected)也被执行。它应显示值“false”,但它也显示类型
的错误消息“线程中的异常”AWT-EventQueue-0“false
未执行下一个while循环。 请帮忙!
答案 0 :(得分:0)
你在java中编写了错误的语法,跟踪代码并尝试下面的示例代码
while (dateArray[reference].selected == false){
while (dateArray[reference].selected == true){
答案 1 :(得分:0)
您的主要问题是您正在尝试将线性命令行程序类型代码强制转换为单线程事件驱动的编程环境,这可能会完全冻结您的GUI。例如:
public void plusOne() {
int reference = 0;
int status = 0;
System.out.println("BEGIN");
System.out.println(dateArray[reference].selected);
while (!dateArray[reference].selected) {
reference++;
System.out.println("SUCCESS");
}
// ... here
在一个简单的控制台程序中很好,因为程序代码流程完全由程序员决定,但请注意,您可能在while循环中有代码供用户输入代码,程序会耐心地等待用户为此,循环将检查条件并决定是否重新询问用户输入或继续循环。
但是这在单线程Swing程序中不起作用,因为while循环将阻塞Swing事件调度线程,然后完全冻结GUI。解决方案是摆脱while循环,而是使用if块和实例字段,并根据字段的状态改变方法的响应。有关如何实现这一点的详细信息将取决于您的程序和代码的详细信息,我们还不知道,但您应该告诉并告诉我们。
答案 2 :(得分:-1)
=应该是==
p = acos((ux*vx + uy*vy) / (sqrt(ux*ux + uy*uy) * sqrt(vx*vx + vy*vy)));