簡體   English   中英

“if else”中的break語句 - java

[英]break statement in “if else” - java

if沒有else if ,我一直都會收到錯誤。

我試着else if還有

for (;;){
        System.out.println("---> Your choice: ");
        choice = input.nextInt();
        if (choice==1)
            playGame();
        if (choice==2)
            loadGame();
        if (choice==3)
            options();
        if (choice==4)
            credits();
        if (choice==5)
            System.out.println("End of Game\n Thank you for playing with us!");
            break;
        else
            System.out.println("Not a valid choice!\n Please try again...\n");=[;'mm
    }

如果您對如何呈現此代碼有更好的了解,請不要猶豫:)

因為你的else沒有附加任何東西。 if without braces只包含緊跟其后的單個語句。

if (choice==5)
{
    System.out.println("End of Game\n Thank you for playing with us!");
    break;
}
else
{
   System.out.println("Not a valid choice!\n Please try again...\n");
}

不使用大括號通常被視為一種不好的做法,因為它可能導致您遇到的確切問題。

此外,在這里使用switch會更有意義。

int choice;
boolean keepGoing = true;
while(keepGoing)
{
    System.out.println("---> Your choice: ");
    choice = input.nextInt();
    switch(choice)
    {
        case 1: 
            playGame();
            break;
        case 2: 
            loadGame();
            break;
        // your other cases
        // ...
        case 5: 
            System.out.println("End of Game\n Thank you for playing with us!");
            keepGoing = false;
            break;
        default:
            System.out.println("Not a valid choice!\n Please try again...\n");
     }
 }         

請注意,我使用了while(boolean)而不是無限for循環,這樣就可以輕松退出循環。 另一種方法是使用break with labels。

“break”命令在“if”語句中不起作用。

如果從代碼中刪除“break”命令然后測試代碼,您應該發現代碼的工作方式完全相同,而沒有“break”命令。

“Break”設計用於內部循環(for,while,do-while,enhanced for和switch)。

問題是你試圖在不使用{}if下使用if語句。 你現在擁有的東西被解釋為:

if( choice==5 )
{
    System.out.println( ... );
}
break;
else
{
    //...
}

你真的想要:

if( choice==5 )
{
    System.out.println( ... );
    break;
}
else
{
    //...
}

此外,作為鬧劇曾表示,這將是更好地使用else if所有的條件,而不是if ,因為如果choice==1 ,它仍將經歷,並檢查是否choice==5 ,這會失敗,它仍然會進入你的其他區塊。

if( choice==1 )
    //...
else if( choice==2 )
    //...
else if( choice==3 )
    //...
else if( choice==4 )
    //...
else if( choice==5 )
{
    //...
}
else
    //...

更優雅的解決方案是使用switch語句。 然而, break從最內部的“塊”只是休息,除非你使用的標簽。 所以你想要標記你的循環,如果情況是5那么打破它:

LOOP:
for(;;)
{
    System.out.println("---> Your choice: ");
    choice = input.nextInt();
    switch( choice )
    {
        case 1:
            playGame();
            break;
        case 2:
            loadGame();
            break;
        case 2:
            options();
            break;
        case 4:
            credits();
            break;
        case 5:
            System.out.println("End of Game\n Thank you for playing with us!");
            break LOOP;
        default:
            System.out.println( ... );
    }
}

您也可以使用標志來告訴循環停止,而不是標記循環。

bool finished = false;
while( !finished )
{
    switch( choice )
    {
        // ...
        case 5:
            System.out.println( ... )
            finished = true;
            break;
        // ...
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM