• 締切済み

java break文とラベル

・for文から合計の数値が1000を越えたら処理を終了するコードを削除する。 ・for文を10回繰り返すfor文を作る。 ・for文で値を1~100まで足したら値はりせっとせずに保持する。 (for文は1~100までを足すと5050になるので、5050にさらに1➕2➕3…と数を加算していく) ・加算結果の数値が20000を越えたら、全ての処理を終了する。 ・終了にはbreak文とラベルを使用する。 以上の条件の作成ができません。 public static void main(String []args){ outside : for(int n = 1: n <= 100; n++){ for(int a = 1; a <= 100; a++){ int i = 1; i += a; if(i > 20000){ break outside; } System.out.println(i); } } } } までは出来ました。 出力結果が1~19900までなりません。 どうしたらその結果になるのかわかる方教えてください。 お願いします。

  • Java
  • 回答数4
  • ありがとう数7

みんなの回答

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.4

5050 * 4 = 20200 -100 = 20100 - 99 = 20001 - 98 = 19903 : 最終値 既に答えは出てるのに、最終値も勘違いしてるんじゃあないのか?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

「出力結果が1~19900までなりません」ってのはどういう意味なんだろう. どんな「出力結果」になったんですか?

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

む?  public static void main(String[] args) { int i = 0; // 追加 outside: for (int n = 1; n <= 100; n++) { for (int a = 1; a <= 100; a++) { // int i = 1; ここを無くす i += a; if (i > 20000) { break outside; } System.out.println(i); } } } こうしたらばっちりになりませんか?

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

int i = 1; がおかしい。これをoutsideの前に出してかつ1じゃなくて0を代入すべし。

s_yonezawa
質問者

補足

それでも1~19900までなりません。

関連するQ&A

  • break ラベルの挙動

    break ラベルのサンプルコードがあったため動かしてみたところ 予想に反した結果になりましたので質問させてください。 下記、サンプルを動かしたところ 1*1=1 1*2=2 1*3=3 1*4=4 2*1=2 2*2=4 2*3=6 2*4=8 3*1=3 3*2=6 3*3=9 というふうに表示されました。 3*3の次は i=4 で 4*1=4 と表示されると想定していました。 なぜi=4にならないのでしょうか。 public class BreadTest { public static void main(String args[]){ outside: for (int i = 1; i < 5; i++){ for (int j = 1; j < 5; j++){ if (i * j > 10){ break outside; } System.out.println(i + "*" + j + "=" + (i * j)); } } } }

    • ベストアンサー
    • Java
  • break文でループを一気に抜けるには

    break文でループを一気に(2個以上) 抜けたい場合はどのようにすればいいのでしょうか? たとえば下のプログラムで1から2に抜けたい すなわちifとforの2つの中括弧を同時に抜けたい場合には どうやってbreak文を記述すればいいのでしょうか? (goto文は使わないということでお願いします。 int k=0; int i; for (i=1;i<10;i++){   k++;   printf("%d",k);   if (k == 5){     printf("a");     break;・・・・・・・・・1→   } } printf("finish");・・・・・・・・・2←

  • for文~break

    break文に達した時、for文から抜けますか?それとも、if { }から抜けるんですか? for文はどこまで影響下にありますか? if ( i==5 ) printf ("サーバーが見つかりません"); まででしょうか? また  if ( i == 5 ) で5なら、実行としていますが、 6,や,8など5 以外でも、サーバーが見つかりません と if文が実行される見たいですが、なぜですか? 教えてください。 #include<stdio.h> int main(void) { int array[5][2]={ {1,14}, {2,28}, {3,19}, {4,8}, {5,15}, }; int sever; int i; printf("番号を入力してください"); scanf("%d",&sever); for( i=0 ; i<5 ; i++ ) if ( sever == array[i][0] ){ printf ( "%d 番には, %d 人います。\n",sever,array[i][1]); break; } if (i==5) printf("サーバーが見つかりません"); return 0; }

  • JAVAのfor文で困っています。

    JAVAの勉強をしていますが、本の練習問題でわからなくて困っています。for文で以下の処理を行いたいです(do,whileはなしです)が、 *を5個ごとに改行したいのですが、改行してくれません。 問題の部分↓ if (n % 5 == 0) System.out.println(); 何か良い方法はありませんか?お願いします。 ------------------------------------------------- //(数を読み込んで)だ個数だけ * を5個ごと改行しながら表示 int n = 0; for (int i = n; n <= 0;){ System.out.print("何個*を表示しますか : "); n = stdIn.nextInt(); } for (int i = 1; i <= n; i++){ System.out.print("*"); if (n % 5 == 0) System.out.println(); } ------------------------------------------------

    • ベストアンサー
    • Java
  • 線形探索(番兵法)のプログラムについて。

    線形探索(番兵法)のプログラムについて考えています。 メイン関数からsearch関数に値を渡してそこで探索させるのですが、 int search(int a[], int n, int key) { int i = 0; a[n] = key; while (1) { if (a[i] == key) break; i++; } return (i == n ? -1 : i); } のwhileを使ったやり方からfor文を使ったやり方に変更したいと思っています。 色々な方法でプログラムを考えてみたいので。 そうすると、なんかうまくいきません。 for文だとどのように考えたらいいのでしょうか?

  • for文を使用して値を代入したいです。教えてください。

    5桁の10進数文字を16進数に変換するコードを作成したのですが、コード上の「商と余りを配列に代入」の箇所をfor文で作成したいのですが、うまくいかず1文1文のコードになってしまいました。「商と余りを配列に代入」する箇所に、当てはまるfor文のコードの所だけ、書き換えたいので教えていただけないでしょうか? //10進数文字を数字の16進数で表示// #include "stdafx.h" #define HEX 5 //「function」:入力文字された文字の処理// char ToInt( char cInt) { int mal=0; switch (cInt){ case '0': mal=0; break; case '1': mal=1; break; case '2': mal=2; break; case '3': mal=3; break; case '4': mal=4; break; case '5': mal=5; break; case '6': mal=6; break; case '7': mal=7; break; case '8': mal=8; break; case '9': mal=9; break; } return (mal); } //「function」:入力文字された文字数// char HexInt( char eInt) { char mul=0; switch (eInt){ case 0: mul='0'; break; case 1: mul='1'; break; case 2: mul='2'; break; case 3: mul='3'; break; case 4: mul='4'; break; case 5: mul='5'; break; case 6: mul='6'; break; case 7: mul='7'; break; case 8: mul='8'; break; case 9: mul='9'; break; case 10: mul='A'; break; case 11: mul='B'; break; case 12: mul='C'; break; case 13: mul='D'; break; case 14: mul='E'; break; case 15: mul='F'; break; } return (mul); } //「function」:桁数の計算(10×指数を計算)// int HexAcc( int n ) { int i; int ans=1; for( i=0; i<n; i++ ){ ans *= 10; } return (ans); } int _tmain(int argc, _TCHAR* argv[]) { int i=0,n=0,j=0,k=0,s=0,m=0; char decimal[255], ditto[255],sub[255],temp[255],flip[255],na[255]; int u=0,odd=0; int a=0,b=0; int sam1=0,sam2=0,sam3=0,sam4=0,sam5=0; int mas1=0,mas2=0,mas3=0,mas4=0,mas5=0; if( argc > 1 ){ decimal[s] = argv[1][i]; } else{ printf("10進数を入力してください。\n"); return 1; } for( k=0; k<=HEX; k++ ){ sub[k] = '0'; } for( k=0; k<=HEX; k++ ){ temp[k] = '0'; } for( k=0; k<=HEX; k++ ){ flip[k] = '0'; } for( k=0; k<=HEX; k++ ){ na[k] = '0'; } for( i=0; argv[1][i] != '\0'; i++ ){ decimal[i] = argv[1][i]; } decimal[i] = '\0'; for( i=0; decimal[i] != '\0'; i++ ){ if( decimal[i] != ' ' ){ ditto[n] = decimal[i]; n++; } } ditto[n]='\0'; for( n=0; ditto[n] != '\0'; n++ ){ if(( ditto[n] == '0' ) || ( ditto[n] == '1' ) || ( ditto[n] == '2' ) || ( ditto[n] == '3' ) || ( ditto[n] == '4' ) || ( ditto[n] == '5' ) || ( ditto[n] == '6' ) || ( ditto[n] == '7' ) || ( ditto[n] == '8' ) || ( ditto[n] == '9' )){ }else{ printf("エラー\n 10進数を入力してください。\n"); return 0; } } for( n=0; ditto[n] != '\0'; n++ ){ m = m + 1 ; } if( m <= HEX ){ }else{ printf("エラー\n入力文字数は、%d文字以内にしてください。\n",HEX); return 0; } for( n=0; ditto[n] != '\0'; n++){ sub[HEX-m+n] = ditto[n]; } sub[HEX] = '\0'; int ans=0, add=0; for( n=0; sub[n] != '\0'; n++){ ans = ToInt(sub[n]); add += ans * HexAcc(HEX-n-1); } //商と余りを配列に代入// sam1 = add / 16; mas1 = add - sam1 *16; temp[0] = mas1; sam2 = sam1 / 16; mas2 = sam1 - sam2 * 16; temp[1] = mas2; sam3 = sam2 / 16; mas3 = sam2 - sam3 * 16; temp[2] = mas3; sam4 = sam3 / 16; mas4 = sam3 - sam4 * 16; temp[3] = mas4; sam5 = sam4 / 16; mas5 = sam4 - sam5 * 16; temp[4] = mas5; //商と余りを配列に代入・ここまでfor文に変更したいです// temp[5]='\0'; for( a=0; a<2; a++ ){ b = temp[a]; temp[a] = temp[4-a]; temp[4-a] = b; } temp[n]='\0'; for( n=0; sub[n] != '\0'; n++){ na[n] = HexInt(temp[n]); } na[5]='\0'; printf("\n10進数文字を16進数で変換した値は %s \n",na); }

  • if・・・break文について教えて下さい♪

    ---------------------------------------------------------------- public class A { static int prime(int number){ int count=0; for(int i=1; i<=number; i+=2){ if(number%i==0) count++; } return count; } } ----------------------------------------------------------------  上に書いたプログラムのprime()メソッド内に、if…break文を使いたいのですが、どう書いたらイイのですか??  上のプログラムをコピーしてからif…break文を付け加えて欲しいです★

    • ベストアンサー
    • Java
  • Java for文

    for文について、キーボードで入力して、その数が素数(1またはその数以外で割り切れない数)であるかを判断するコードですが、for文とif文の関係が良くわかりません。ご教示ください。 <サンプル> public static void main(String[] args) throws IOException{ System.out.println("2以上の整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); ※1 for(int i=2; i<=num; i++){ if(i == num){ System.out.println(num + "は素数です。"); ※2 }else if(num % i == 0){ System.out.println(num + "は素数ではありません。"); break; ※1と※2の処理について初心者でもわかるような解説をおねがいできますでしょうか? よろしくお願いいたします。

  • ご教示ください。

    ご教示ください。 javaのfor文を用いたループ処理についてです。 for( int i = 0; i < 10; i++){ System.out.print( i ); if ( i == 3){ break; } 結果 0123 ----------------------------------------------- for( int i = 0; i < 10; i++){ if ( i == 3){ break; } System.out.print( i ); 結果 012 後者の、012になる結果はわかります。 breakをすることで、3以降のループ処理から離脱するということは理解できるのですが、前者が理解できません。 0123 なぜ、3が表示されているのでしょうか。 よろしくお願いいたします。

  • do - while 文

    以下のコードをコンパイル後実行すると、0~9までの出現回数がわかるのですが、処理を続けますか?と出た後yを入力するともう一度 do 以降を実行するようにしたいのですが、yを入力する前にプログラムが終了してしまいます。何がいけないんでしょうか? #include <iostream> using namespace std; int main (void) { int i; char cont; char c; int count[10] = {0}; do{ while (cin.get(c)){ switch (c){ case '0': count[0]++; break; case '1': count[1]++; break; case '2': count[2]++; break; case '3': count[3]++; break; case '4': count[4]++; break; case '5': count[5]++; break; case '6': count[6]++; break; case '7': count[7]++; break; case '8': count[8]++; break; case '9': count[9]++; break; } } for (i =0; i < 10; i++) cout << i << "の出現回数は" << count[i] << "\n"; cout <<"処理を続けますか?(y/N)"; cin >>cont; }while (cont == 'y'); }

専門家に質問してみよう