-5

これは私が持っているコードですが、私は少しコードブラインドになっていて、問題が簡単だと感じていても問題が見えないことを認めなければなりません。どんな助けでも大歓迎です。前もって感謝します。

   do{
        System.out.println("Command:");
        scan = new Scanner (System.in);

        String line;                        

        line = scan.nextLine();

        String[]SplitUpText;

        SplitUpText=line.split(" ");

        Command = SplitUpText[0];

        int param1=-1, param2=-1;

        if (Command.compareTo("move")==0)
        {
            if (SplitUpText.length>1)
            {
                param1=Integer.parseInt(SplitUpText[1]);
                if(SplitUpText.length>2)
                {
                    param2=Integer.parseInt(SplitUpText[2]);
                }
            }g.moveTo (param1, param2);


        }else if(Command.compareTo("circle")==0){

            if (SplitUpText.length>1)
            {
                param1=Integer.parseInt(SplitUpText[1]);
            }g.circle (param1);
        }else if(Command.compareTo("line")==0){
            if (SplitUpText.length>1)
            {
                param1=Integer.parseInt(SplitUpText[1]);
                if(SplitUpText.length>2)
                {
                    param2=Integer.parseInt(SplitUpText[2]);
                }
            }g.lineTo (param1, param2);
        } else {
            System.out.println("Invalid Command");
        }

    } while (Command.compareTo ("end")!=0);
4

2 に答える 2

2

一般に、これを回避するのがベスト プラクティスですが (while代わりに式に条件を追加することによって)、ループを途中で終了させたい場合は、次のように使用できます。break;

より簡単な例を次に示します。

int i;

i = 0;
do {
    ++i;
    System.out.println("Before: " + i);
    if (someSpecialCondition) {
        break;
    }
    System.out.println("After: " + i);
}
while (i < 5);

iがになったときに特別な条件が発生すると仮定すると3、出力は次のようになります。

前: 1
後: 1
前: 2
後: 2
前: 3

breakループがどのように終了したかに注意してください。あらゆる種類のループ ( do..whilewhile、および両方のfor) で使用できます。

ネストされたループがあり、内側のループから外側のループを分割する必要がある場合は、おそらくそのコードをサブメソッドにリファクタリングする必要があります。ただし、リファクタリングしたくない場合は、指示 breakされた を使用できます。

int i, j;

outerLoop: for (i = 0; i < 5; ++i) {
    for (j = 0; j < 5; ++j) {
        if (i == 2 && j == 2) {
            break outerLoop;
        }
    }
}

そこで、outerLoop外側のループにラベルを付け、break outerLoop内側のループと外側のループの両方を終了させます。繰り返しますが、これを行う場合は、おそらくリファクタリングの時期です。

JLS からの詳細: http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.15

于 2012-12-05T12:48:35.533 に答える
0

break ステートメントの使用を検討してください。

于 2012-12-05T12:49:11.600 に答える