回答:
break
ループを離れcontinue
、次の反復にジャンプします。
詳細とコードサンプルについては、分岐ステートメントを参照してください。
break
breakステートメントには、ラベル付きとラベルなしの2つの形式があります。ラベルのないフォームは、前のswitchステートメントの説明で見ました。ラベルなしのブレークを使用して、for、while、またはdo-whileループを終了することもできます[...]
ラベルなしのbreakステートメントは、最も内側のswitch、for、while、またはdo-whileステートメントを終了しますが、ラベル付きのbreakは、外側のステートメントを終了します。
continue
continueステートメントは、for、while、またはdo-whileループの現在の反復をスキップします。ラベルなしのフォームは、最も内側のループの本体の最後までスキップし、ループを制御するブール式を評価します。[...]
ラベル付きのcontinueステートメントは、指定されたラベルでマークされた外部ループの現在の反復をスキップします。
System.out.println ("starting loop:");
for (int n = 0; n < 7; ++n)
{
System.out.println ("in loop: " + n);
if (n == 2) {
continue;
}
System.out.println (" survived first guard");
if (n == 4) {
break;
}
System.out.println (" survived second guard");
// continue at head of loop
}
// break out of loop
System.out.println ("end of loop or exit via break");
これにより、次の出力が得られます。
starting loop:
in loop: 0
survived first guard
survived second guard
in loop: 1
survived first guard
survived second guard
in loop: 2
in loop: 3
survived first guard
survived second guard
in loop: 4
survived first guard
end of loop or exit via break
forループだけでなく、ブロックにラベルを付けて、ネストされたブロックから外側のブロックに分割/続行することができます。いくつかのケースではこれが役立つかもしれませんが、プログラムのロジックが次の例よりも理解するのがはるかに良いことを除いて、一般的にはそのようなコードを避けようとします:
first:
for (int i = 0; i < 4; ++i)
{
second:
for (int j = 0; j < 4; ++j)
{
third:
for (int k = 0; k < 4; ++k)
{
System.out.println ("inner start: i+j+k " + (i + j + k));
if (i + j + k == 5)
continue third;
if (i + j + k == 7)
continue second;
if (i + j + k == 8)
break second;
if (i + j + k == 9)
break first;
System.out.println ("inner stop: i+j+k " + (i + j + k));
}
}
}
可能だからというわけではありません。
面白い方法でコードを難読化したい場合は、意味のある名前を選択するのではなく、http:に続けて、ソースコード内のWebアドレスのように、異質に見えるコメントを付けます。
http://stackoverflow.com/questions/462373
for (int i = 0; i < 4; ++i)
{
if (i == 2)
break http;
これはジョシュア・ブロックのクイズによるものだと思います。:)
http://stackoverflow.com/questions/462373/
仕事もしませんか?
Breakはループを完全に離れ、ループの後にステートメントを実行します。一方、Continueは現在の反復を終了し、ループ内の次の値で実行されます。
このコードはすべてを説明します:
public static void main(String[] args) {
for(int i=0;i<10;i++)
{
if (i==4)
{
break;
}
System.out.print(i+"\t");
}
System.out.println();
for(int i=0;i<10;i++)
{
if (i==4)
{
continue;
}
System.out.print(i+"\t");
}
}
出力:
0 1 2 3
0 1 2 3 5 6 7 8 9
Breakステートメント
ループがすべてのステップ値に対して完全に反復を完了する前に、ループを終了する必要がある場合があります。たとえば、特定の条件を満たす数値が見つかるまで、数値のリストをループします。または、特定の文字が読み取られるまで、ファイルから文字のストリームをループします。
次の例では、単純なforループを使用して0〜9の値を出力しています。
for(int i=0; i<10; i++) {
System.out.println(i);
}
出力:
0
1
2
3
4
5
6
7
8
9
ここで、i == 4のときにbreakステートメントを追加すると、コードがiが4になるとループから抜け出します。breakステートメントを使用して、forループ、whileループ、およびdo-whileループから抜け出すことができます。breakステートメントは、現在のループから抜け出すだけです。ネストされた内部ループから外部ループを抜け出すには、breakステートメントでラベルを使用する必要があります。
for(int i=0; i<10; i++) {
System.out.println(i);
if(i==4) {
break;
}
}
出力:
0
1
2
3
4
ステートメントを続ける
Javaのcontinueステートメントは、ループの現在の反復をスキップし、次の反復に直接進みます。forループでcontinueステートメントを呼び出した後、ループ実行はステップ値を実行し、ブール条件を評価してから次の反復に進みます。次の例では、0〜9のすべての値をループで出力していますが、4の出力はスキップしています。
for(int i=0; i<10; i++) {
if(i==4) {
continue;
}
System.out.println(i);
}
出力:
0
1
2
3
5 <---- SKIPPED OVER 4 and continued with next loop iteration
6
7
8
9
ループラベル-Breakステートメントネストされたループ内でラベル を使用するには、内側のループから抜けた後に実行を継続する場所を指定します。通常、breakステートメントは最も内側のループから抜け出すだけなので、外側のループから抜け出す場合は、ラベルを使用してこれを実現できます。基本的にはgotoステートメントに似ています。
次の例では、3つのループを使用し、すべてが互いにネストされています。最も内側のループの内側から最も外側のループを完全に抜け出す方法はないため、「outer1」というラベルを使用してこれを実行し、breakステートメントの横にラベルを指定できます。
outer1:
for(int i=0; i<5; i++) {
for(int j=0; j<4; j++) {
for(int k=0; k<2; k++) {
System.out.println("[" + i + "][" + j + "][" + k + "]");
if(j == 3) {
break outer1;
}
}
}
}
出力:
[0][0][0]
[0][0][1]
[0][1][0]
[0][1][1]
[0][2][0]
[0][2][1]
[0][3][0]
表示される最後の行が「0 [0]」であることに注意してください。これは、j == 3であり、「break outer1;」を呼び出した場所です。最も外側のループから抜け出します。
ループラベル-継続ステートメント
また、continueキーワードでラベルを使用して、特定のポイントからループを続けることもできます。前の例を取り、continue outer1;
代わりに指定するように1行を変更break outer1;
すると、ループはループからouter1
抜け出すのではなく、ラベルからループし続けます。continue outer1;
呼び出されるたびに、ループインデックスiを1ずつ増やした後、コードは外側のループから継続することに注意してください。
outer1:
for(int i=0; i<5; i++) {
for(int j=0; j<4; j++) {
for(int k=0; k<2; k++) {
System.out.println("[" + i + "][" + j + "][" + k + "]");
if(j == 3) {
continue outer1;
}
}
}
[0][0][0]
[0][0][1]
[0][1][0]
[0][1][1]
[0][2][0]
[0][2][1]
[0][3][0] <---- CONTINUE WITH LABEL CALLED HERE
[1][0][0] <---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP
[1][0][1]
[1][1][0]
[1][1][1]
[1][2][0]
[1][2][1]
[1][3][0] <---- CONTINUE WITH LABEL CALLED HERE
[2][0][0] <---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP
[2][0][1]
[2][1][0]
[2][1][1]
[2][2][0]
[2][2][1]
[2][3][0] <---- CONTINUE WITH LABEL CALLED HERE
[3][0][0] <---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP
[3][0][1]
[3][1][0]
[3][1][1]
[3][2][0]
[3][2][1]
[3][3][0] <---- CONTINUE WITH LABEL CALLED HERE
[4][0][0] <---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP
[4][0][1]
[4][1][0]
[4][1][1]
[4][2][0]
[4][2][1]
[4][3][0]
シンプルで正確な優れた答え。
コードサンプルを追加します。
C:\oreyes\samples\java\breakcontinue>type BreakContinue.java
class BreakContinue {
public static void main( String [] args ) {
for( int i = 0 ; i < 10 ; i++ ) {
if( i % 2 == 0) { // if pair, will jump
continue; // don't go to "System.out.print" below.
}
System.out.println("The number is " + i );
if( i == 7 ) {
break; // will end the execution, 8,9 wont be processed
}
}
}
}
C:\oreyes\samples\java\breakcontinue>java BreakContinue
The number is 1
The number is 3
The number is 5
The number is 7
continue
現在実行中のスキップループとに移動し、次のループのに対し、break
MOVESのOUTのループと次の文を実行した後にループ。次のコードを使用して違いを学びました。さまざまな出力を確認してください。
public static void main(String[] args) {
for(int i = 0; i < 5; i++){
if (i == 3) {
continue;
}
System.out.print(i);
}
}//prints out 0124, continue moves to the next iteration skipping printing 3
public static void main(String[] args) {
for(int i = 0; i < 5; i++){
if (i == 3) {
break;
}
System.out.print(i);
}
}//prints out 012, break moves out of the loop hence doesnt print 3 and 4
以下を検討してください。
int n;
for(n = 0; n < 10; ++n) {
break;
}
System.out.println(n);
breakはループを終了させ、nの値は0です。
int n;
for(n = 0; n < 10; ++n) {
continue;
}
System.out.println(n);
continueは、プログラムカウンターをループの最初の行に戻し(条件がチェックされ、nの値が増分されます)、nの最終値は10です。
また、breakは、それが含まれるループの実行を終了するだけです。
int m;
for(m = 0; m < 5; ++m)
{
int n;
for(n = 0; n < 5; ++n) {
break;
}
System.out.println(n);
}
System.out.println(m);
の効果に何かを出力します
0
0
0
0
0
5
簡単な例:
break
ループを離れます。
int m = 0;
for(int n = 0; n < 5; ++n){
if(n == 2){
break;
}
m++;
}
System.out.printl("m:"+m); // m:2
continue
ループを開始するために戻ります。
int m = 0;
for(int n = 0; n < 5; ++n){
if(n == 2){
continue; // Go back to start and dont execute m++
}
m++;
}
System.out.printl("m:"+m); // m:4
条件が満たされた場合に何も実行されないようにするには、continueを使用し、条件が満たされた場合はループから抜け出すために、breakを使用する必要があります。
たとえば、下記のコードで。
for(int i=0;i<5;i++){
if(i==3){
continue;
}
System.out.println(i);
}
上記のコードは結果を出力します:0 1 2 4
今、このコードを検討してください
for(int i=0;i<5;i++){
if(i==3){
break;
}
System.out.println(i);
}
このコードは0 1 2を出力します
それが継続と中断の基本的な違いです。
休憩の意味は次のとおりです。
int[] a = new int[] { 1, 3, 4, 6, 7, 9, 10 };
// find 9
for(int i = 0; i < a.Length; i++)
{
if (a[i] == 9)
goto goBreak;
Console.WriteLine(a[i].ToString());
}
goBreak:;
ここに継続の意味があります:
int[] a = new int[] { 1, 3, 4, 6, 7, 9, 10 };
// skip all odds
for(int i = 0; i < a.Length; i++)
{
if (a[i] % 2 == 1)
goto goContinue;
Console.WriteLine(a[i].ToString());
goContinue:;
}
まず、Javaには、break、unlabeled break、labeled continue、unlabeled continueという2つのタイプのbreak and continueがあることを知っておくべきだと思います。次に、それらの違いについて説明します。
class BreakDemo {
public static void main(String[] args) {
int[] arrayOfInts =
{ 32, 87, 3, 589,
12, 1076, 2000,
8, 622, 127 };
int searchfor = 12;
int i;
boolean foundIt = false;
for (i = 0; i < arrayOfInts.length; i++) {
if (arrayOfInts[i] == searchfor) {
foundIt = true;
break;//this is an unlabeled break,an unlabeled break statement terminates the innermost switch,for,while,do-while statement.
}
}
if (foundIt) {
System.out.println("Found " + searchfor + " at index " + i);
} else {
System.out.println(searchfor + " not in the array");
}
}
ラベルなしのbreakステートメントは、最も内側のswitch、for、while、do-whileステートメントを終了します。
public class BreakWithLabelDemo {
public static void main(String[] args) {
search:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
System.out.println(i + " - " + j);
if (j == 3)
break search;//this is an labeled break.To notice the lab which is search.
}
}
}
ラベル付きの改行は、外側のステートメントを終了します。javacとjavaのこのデモの場合、次のようになります。
0 - 0
0 - 1
0 - 2
0 - 3
class ContinueDemo {
public static void main(String[] args) {
String searchMe = "peter piper picked a " + "peck of pickled peppers";
int max = searchMe.length();
int numPs = 0;
for (int i = 0; i < max; i++) {
// interested only in p's
if (searchMe.charAt(i) != 'p')
continue;//this is an unlabeled continue.
// process p's
numPs++;
}
System.out.println("Found " + numPs + " p's in the string.");
}
ラベルのないcontinueステートメントは、for、while、do-whileステートメントの現在の反復をスキップします。
public class ContinueWithLabelDemo {
public static void main(String[] args) {
search:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
System.out.println(i + " - " + j);
if (j == 3)
continue search;//this is an labeled continue.Notice the lab which is search
}
}
}
ラベル付きのcontinueステートメントは、指定されたラベルでマークされた外部ループの現在の反復をスキップします。javacとjavaデモを使用すると、次の結果が得られます。
0 - 0
0 - 1
0 - 2
0 - 3
1 - 0
1 - 1
1 - 2
1 - 3
2 - 0
2 - 1
2 - 2
2 - 3
質問がある場合は、Javaのチュートリアルをご覧ください。ここにリンクの説明を入力してください
簡単に言うと、breakは現在のループを終了し、ループが終了した後の最初の行で実行を継続します。continueはループ条件に戻り、ループを実行し続けます。
継続と中断の違いを理解する簡単なプログラム
continue
使用する場合
public static void main(String[] args) {
System.out.println("HelloWorld");
for (int i = 0; i < 5; i++){
System.out.println("Start For loop i = " + i);
if(i==2){
System.out.println("Inside if Statement for i = "+i);
continue;
}
System.out.println("End For loop i = " + i);
}
System.out.println("Completely out of For loop");
}
OutPut:
HelloWorld
Start For loop i = 0
End For loop i = 0
Start For loop i = 1
End For loop i = 1
Start For loop i = 2
Inside if Statement for i = 2
Start For loop i = 3
End For loop i = 3
Start For loop i = 4
End For loop i = 4
Completely out of For loop
break
使用する場合
public static void main(String[] args) {
System.out.println("HelloWorld");
for (int i = 0; i < 5; i++){
System.out.println("Start For loop i = " + i);
if(i==2){
System.out.println("Inside if Statement for i = "+i);
break;
}
System.out.println("End For loop i = " + i);
}
System.out.println("Completely out of For loop");
}
Output:
HelloWorld
Start For loop i = 0
End For loop i = 0
Start For loop i = 1
End For loop i = 1
Start For loop i = 2
Inside if Statement for i = 2
Completely out of For loop
したがって、forまたはwhileループ内にいます。休憩を使用して; ループの外にあなたを置きます。のように、それは終了します。継続する; 次の反復を実行するように指示します。
ifステートメントでcontinueを使用しても意味がありませんが、中断します。便利です。スイッチの場合...ケースでは、常にブレークを使用します。ケースを終了するため、別のケースは実行されません。
if
もあります。その場合、十分なポイントがあります。