- 締切済み
ご教示ください。
ご教示ください。 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が表示されているのでしょうか。 よろしくお願いいたします。
- daisuke987
- お礼率4% (2/46)
- Java
- 回答数3
- ありがとう数1
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8248)
例題としてはif文が無駄なように思います。 for文を修正してif文を省いた方が良いでしょう。 for( int i = 0; i < 3; i++){ System.out.print( i ); } 結果 012 for( int i = 0; i <= 3; i++){ System.out.print( i ); } 結果 0123
- AsarKingChang
- ベストアンサー率46% (3467/7472)
3を表示した後にBreakしたからです。 違和感があるなら、 実際に打ち込んでみて、結果を確認すればわかりやすいかと。
- maiko04
- ベストアンサー率17% (345/1956)
3を書いてからbreakしているからです。
関連するQ&A
- forループに慣れるには
初めまして。 今資格を取ろうと思い独学でJavaを勉強してるんですが、 つまらない部分でつまずいています。 それは少々複雑なfor等のループです。 変数を追っていくうちにこんがらがってしまい、 変数の正しい値を見失ってしまいます。 例えば… Loop: for(int i = 0; i<5; i++) { for(int j =0; j<5; j++) { if(i==j) continue Loop; System.out.println("i = " +i+ "j = " +j); if(i > 3) break Loop; } } や、 int i,j; for(i = 0, j = 0; i<3;) { if(i++ == 2 || j++ == 2) break; } System.out.println(i); System.out.println(j); の様なループです。 試験範囲は大方勉強出来てるんですが まぬけな事にループがイマイチ理解出来てなくて(恥) 皆さんはどうやって慣れてこられましたか? つまらない質問ですが何か良いコツやアドバイスがあれば よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- 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
- 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←
- ベストアンサー
- C・C++・C#
- 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
- ゴールドバッハの予想についてのプログラムなんですが・・・
ゴールドバッハの予想(4以上の任意の偶数は,2つの素数の和で表せる)を表すJavaプログラムです。 ---------------------------------------------------------------- public class Gold { static int prime(int number){ int count=0; for(int i=1; i<=number; i+=2){ if(number%i==0) count++; } return count; } public static void main(String[] args) { long start = System.currentTimeMillis(); int n, p; //System.out.println("4=2+2"); for(n=6; n<100000; n+=2){ for(p=2; p<n; p++){ if(prime(p)==2 && prime(n-p)==2){ //System.out.println(n + "=" + p + "+" + (n-p)); break; } } if(p==n){ //System.out.println("この予想は間違いと判明!"); break; } if(n%1000==0){ long stop = System.currentTimeMillis(); System.out.println(n + " " + (stop-start)); } } } } ---------------------------------------------------------------- 『for(int i=1; i<=number; i++){ のループ、number まで回しているのが無駄である。素数判定は 2 以上、√number 以下の整数で割り切れれば素数でないのでループの上限は√number で良い。number まで回す必要はなく、i で割り切れた時点で prime=1 として 飛び出せばよい。ループを回り終わっても割り切れていなければ prime=2 で出る。』というコメントを、上に書いたプログラムを変更して表すにはどうしたら良いのですか?? 誰か教えて下さい(*_*) お願いします★
- ベストアンサー
- Java
- JAVAで素数判定
JAVAの勉強をしてます 練習問題で、素数判定のプログラムをしているのですが。 1~14までの判定はうまくいきますが、15の判定の時に素数であると表示されて困ってます。どなたかわかりませんか? //読み込んだ数字 n が 15 の場合 if(n == 1) System.out.println("素数ではありません。"); if(n == 2) System.out.println("素数です。"); for (int i = 2; i < n; i++) { if (n % i == 0) { System.out.println("素数ではありません。"); break; } else { System.out.println("素数です。"); break; } } --結果---------------------------------------------- 素数です
- ベストアンサー
- Java
- ループの回数の問題についてです。
SUN教科書 javaアソシエイツP102についてです。 Helloが何回表示されるかという問題です。 i=1 j=1の時、continue文によりouterへ移動するという 所までは理解出来ます。 分からないのはその後、解説によるとiが2ということです。 そして内側のforループは0から2の間、実行されるというのです。 iが2になるなら、内ループに入った時jも 2になるのではないのでしょうか。 よろしくお願い致します。 class LoopSample{ public static void main(String[] args){ outer: for(int i=0; i<5; i++){ for(int j=0; j<3; j++){ if(i==1 && j==1){ continue outer; } System.out.println("Hello"); } if(i==1 || i==2){ break; } } } }
- ベストアンサー
- Java
- カレンダーを作成する記述方法について
1月 1 2 3 4 5 6 7 (中略) 22 23 24 25 26 27 28 29 30 31 2月 1 2 3 4 5 6 7 8 9 10 11 このように1月~12月までのカレンダーを作成する為の プログラムの記述方法について伺います。 ※ここでは左詰で表示されてしまいますが、実際には 2/1は1/31の隣から表示されるようになっています。 <解答> class Calen{ public static void main(String[] args){ int week =0;//7日で折り返しする為の変数 //12回ループ(日付) for(int month =1; i <=12; i++){ System.out.println(month + "月"); //一ヶ月の始まりと終わりの並びを合わせる for(int sp = week; sp > 0; sp--){ System.out.println(" ");//スペース3つ } //31回ループ(日付) for(int day = 1; i <=31; i++){ //日付を右詰にする。 if(day < 10){ System.out.println(" " + day);//スペース2つ }else{ System.out.println(" " + day);//スペース1つ } //一週間のカウントを行い、折り返し処理を行う if(week < 6){ week++; }else{ System.out.println(); week = 0; } //2月は28日まで if(month == 2 && day ==28){ break; } //4.6.9.11は30日まで if((month == 4 || month == 6 || month == 9 || month == 11) && day == 30){ break; } } System.out.println(); } } } ************************************************************** <質問> 1.int week = 0; とありますが、なぜ0を代入しているのですか? 0週なんてないのに・・・ 2.//一ヶ月の始まりと終わりの並びを合わせる for(int sp = week; sp > 0; sp--){ System.out.println(" ");//スペース3つ } ここの記述については「sp > 0; sp--」と記述する理由も 分かりませんが、そもそもspの変数が指しているものって 何なのでしょうか? 3.>//日付を右詰にする。 if(day < 10){ >//一週間のカウントを行い、折り返し処理を行う if(week < 6){ 一番の疑問は、ここで10と6という数字が使われている理由です。 week < 7なら納得行くけど、なぜ6なのか・・・? day < 10については、まったく意味が分かりません。 出来れば、全体的に解説していただけるとありがたいです。 もちろん、一ヶ所だけの回答でも結構ですので、よろしくお願いします。
- ベストアンサー
- Java
- forループの中での初期化
class Foo{ public static void main(String args[]){ int x=10; for(int i=0;i<5;i++){ System.out.print(x+i); } System.out.print("\n"+i); } } このプログラムはコンパイルエラーが出ます。 iがforループの中で宣言されていてその外では無効だからです。 そこで class Foo{ public static void main(String args[]){ int x=10; int i; for(i=0;i<5;i++){ System.out.print(x+i); } System.out.print("\n i="+i); } } のようにしてみました。 i=5と出ました。 ふと、iは確かに宣言されているけど、初期化はforの中でしかされていないのになぜコンパイルエラーにならなかったんだろう??、と思ってしまいました。 おかしくないでしょうか?
- ベストアンサー
- Java