• ベストアンサー

for分等を使用したインクリメント演算

nao-yの回答

  • nao-y
  • ベストアンサー率58% (111/190)
回答No.7

あーまた、おっしゃってる意味が分かりづらいんですが。。。 > 下記の > ソースから > 連続番号を生成できるソースだけを抜き出したいのですが > 可能でしょうか? 「抜き出す」って、こういう意味↓じゃないんですよね? --from------- while( (line=buf.readLine()) != null ) { i++; } --to--------- (余談ですが、ループの中で毎回newを行っていると メモリが足りなくなることがありますよ。) 連続番号を生成するコードを抜き出して、 サブルーチンにしたいってことですかね? サブルーチンにするにしたって、 ・引数に現在の番号を渡して、それに1を足した値を返す だけのことですよね。 i++; と1行だけ書けば済むところを、 static int serealNo(int sno){ serealNo = sno + 1; } とか3行以上書くなんて無駄だと思いますが。 違うんですかね? 私の解釈がまちがっているのでしょうか? もう少し具体的に、わかりやすく(例えば仕事のできない部下に 説明するようなつもりで)書いてください。

ITJack
質問者

お礼

正: > 最終行の数値はプログラムを実行するたびに変わりますが、 > 1度決めた条件文を書き換えたくないのです。 ということですよね??? それでしたら可能ですし、やはりfor文が良いと思います。 BufferReaderクラスを使うなら、ファイルの内容をバッファに読み込んだ後、 BufferReaderクラスのメソッドで行数を取得できますよね。 こちらのfor文の条件文を使用した場合 for (i = 1; i <= 読み込んだバッファ.行数取得メソッド; i++) と書かれればよいかと思います。 とありましたが 読み込んだバッファ⇒BufferReader? 行数取得メソッド⇒? はなにを記述すればよいのでしょうか? お手数おかけいたします。

ITJack
質問者

補足

お手数をおかけします。 分かりやすく説明する自信がないので 質問を変えさせていただきます。 アドバイスいただいた構文をソース for (i = 1; i <= 行数; i++) out.println(i+","+セキュリティコード[i]+","+シリアル番号[i]); を加えたとして サンプル(少し変えてます)にあるような セキュリティーコード(tmp[0], out); out.print(","); シリアル番号(tmp[1out); out.println(","); 出力データに対して用意してある 各メソッドのソースは void セキュリティーコード(String セキュリティーコード(, PrintWriter out) { out.print(セキュリティーコード); void シリアル番号(String シリアル番号(, PrintWriter out) { out.print(シリアル番号); どうすればよいのでしょうか??

関連するQ&A

  • 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
  • java for文、if文を使っての三角形

    例:1 23 456 78910 ・・・・・・のようにひょうじさせるプログラムを作成するのに、for文とIf文を使っての三角形を   作成したいのですが、If文の条件式が分からないのとどうしたら、上記のようなプログラムが   出来るのか教えてください。お願いします。 public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ // 行に表示させる個数を表現するための変数がないため今回、新たに変数を用意する。 int a = 1; //行の終わりを改行して1増やすための変数がないため今回、新たに変数を用意する。 int b = 1; // 1~100までの数字を用意する。 for (int i = 1; i <= 100; i++) { //変数iをSystem.out.printを使って変数iをコンソールの中に出力させる。 System.out.print(i); //System.out.println("")を使って改行する。 System.out.println(" "); //変数iに1増加して数字を順番にする。 i++; if(a <= i){ System.out.print(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 for文 だけで逆ピラミッドを作る

    教えてください。 for 文だけで逆ピラミッドを作りたいのですが、*の数が2個ずつ減ればピラミッド 作成なのですが、私の文だと*は1個ずつしか減りません。 2個の指定はどのうように記述すればよいでしょうか? *を3と指定した場合 ***** (5) -***   (3) --*     (1) と表示したいのですが、下の文だと ***** (5) -****  (4) --***   (3) となってしまいます。 import java.io.*; class Sample4 { public static void main(String [] args) throws IOException { System.out.println("いくつ*を入力しますか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); int j =0; int i =0; int s =0; //行数制御 for(i=0; i<num; i++) { for(s=0; s<i; s++) { System.out.print("-"); } for(j=num*2-1; j>i; j--) { System.out.print("*"); //System.out.print("d"); } //改行タグ System.out.print("\n"); } } }

  • 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
  • ご教示ください。

    ご教示ください。 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が表示されているのでしょうか。 よろしくお願いいたします。

  • ループ処理の際、最後だけ","をつけたくない

    for(int i = 0; i < a.length; i++){ System.out.print(a[i]+","); } 配列aの要素を並べて表示する時、System.out.print中に","をつけると、配列要素の最終部にまで , がついてしまいます。(・・・・43,3,98, のように) 最後だけ "," をつけたくない場合、どのように記述すればいいのでしょうか。

    • ベストアンサー
    • Java
  • for文について

    for文を使って、以下のような図形を作成してますが、 どうしてもうまく作れません。 どなたか教えていただけないでしょうか? 現在出来ているソースは次のようです。 まるで異なる図形になってしまいますが。 public class kurikaeshi { public static void main(String[] args) { int i = 0, j = 0, k = 0, l=0; for(i = 0; i < 10; i++) { for(j = 0; j < i + 1; j++) { for(k = 0; k < 2*j; k++) { System.out.print(" "); } for(l = 0; l < (2*i + 1) - 2*k; l++) { System.out.print("*"); } System.out.println(); } } } } + +++ + +++++ +++ + +++++++ +++++ +++ + +++++++++ +++++++ +++++ +++ + +++++++++++ +++++++++ +++++++ +++++ +++ +

  • java ネストしたfor文について

    ***** **** *** ** * 上のように*が減るようにしたいのですが下のソースではどこが悪いか教えてください class TestGoo{ public static void main(String args[]){ for(int i = 5; i>=1; i--){ for(int j = 5;j>=1; j--){ System.out.print('*'); } System.out.println(); } } }

  • 多分インクリメントがよく解ってないのかも

    #include <iostream> using namespace std; int main() { int s = 1; for(int i=0; i<5; i++){ for(int k=0; k<s; k++){ cout << '*'; } cout << '\n'; s++; } return 0; } をコンパイラすると、 * ** *** **** ***** の様に出力されます。 この二つの**マークの所から、なぜ、そうなるのかが理解できません。 for(int k=0; k<s; k++){ の k<s;の所は最初、0<1;となって。*が一つ出力され、k++でkが1になり'\n'で改行され、 s++でsが2になり、1<2;となり出力の2行目に*が一つでます。でも1<2なので、\nになってしまいます。 しかし、この考え方は間違っているので、理解できないのです。 要点は**がどの様な手順で出力されているのかが解りません。 **が理解できれば***や、****も理解できると思います。 for(int k=0; k<s; k++){ cout << '*'; } のk++のインクリメントは{ }のブロック内の最後の地点で、1プラスになるのですよね?