2012-02-09 83 views
1

如何让我的程序在用户决定有意退出程序之前提示用户进行不同的选择?现在我试着用一个名为'exit'的布尔值来尝试一个do-while循环,试图说exit虽然是false,但要提示用户选择要做什么,尽管它只要求他们一次,然后在完成之后用户想要的,应用程序停止。更多'do while'循环的麻烦,Java

这里是我的代码:

boolean exit = false; 

do { 
    int options = 0; 
    do { 
    options = Integer.parseInt(JOptionPane.showInputDialog(null, 
       "Would you like to:" 
       + "\n(Enter number value of option you would like to choose.)\n" 
       + "\n1. See your recommendations. \n2. See top rated books." 
       + "\n3. See random books of the day. \n4. Exit")); 
    } while (logIn < 1 || logIn > 4); 

    if (options == 1) { 
    recommend.displayRecommendations(custIndex); 
    } else if (options == 2) { 
    calculations.displayTopTen(); 
    } else if (options == 3) { 
    calculations.displayRandomBooks(); 
    } else if (options == 4) { 
    exit = true; 
    System.exit(0); 
    } 
} while (exit = false); 

任何帮助,将不胜感激。

回答

5

您检查logIn变量,但正确的应该是options。变化:

while (logIn < 1 || logIn > 4) 

到:

while (options < 1 || options > 4) 

此外,while (exit = false)(未遂分配)必须while (exit == false)(比较),或者甚至更好,while (!exit)

而且,最后,虽然它不无所谓,在拨打System.exit()之前立即设置exit = true有点多余。

+0

更好,'!exit' :) – 2012-02-09 01:13:25

+0

@AndresF。同意! – 2012-02-09 01:15:02

+0

如果你想明确而不是说'!exit'使用'false == exit'。这样,如果你发指令,编译器会告诉你,你不能分配给'false'。 'null'比较也很方便。 – 2012-02-09 01:16:22

7

这是你的问题:

while (exit = false); 

非常仔细...

+0

Ofcoooooooourse ...我为布尔值赋值为false,而不是检查是否为false。谢谢。 – Marcos 2012-02-09 01:15:29

+0

“这是你的问题” - 你是一个_pirate吗?_这是一个可怕的事情做的英语:-) – paxdiablo 2012-02-09 01:16:10

+0

@Marcos,嘿嘿,我们都在某个时候完成了它... – Nim 2012-02-09 01:16:56