• ベストアンサー

メソッドを跨いだfor文に関しまして

皆さん、こんにちわ。 JAVAプログミィングを始めたばかりの初心者です。 自分では解決に至らない内容でしたが、 とっても簡単な質問でしたらごめんなさい。 初心者の割には周りに質問できる人もいないため、 アドバイスいただけるとありがたいです。 今回は、For文の使い方で分からないことがありましたが、 キーワードが悪いのか、 googleで調べきれず、 質問させていただきたく書き込みました。 以下のように、 クラス内で特定の2つのメソッドだけを、 for文で2000回繰り返し処理を行いたいと思っています。 これって、可能なものなのでしょうか? もし可能な場合ですが、 ずずしく大変恐縮ですが、 サンプルの場所などご指摘いただけますと大変ありがたい次第です。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ class { ・メソッド(1){}; ・メソッド(2){}; for (int i = 1 ; i <= 2000 ; i++){ ・メソッド(3){}; ・メソッド(4){}; } }  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ※メソッド3とメソッド4のみ2000回繰り返す感じです。

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

class TwoThousand { public static void main(String args[]){ Hoge1(); Hoge2(); for ( int i = 0 ; i < 2000 ; i ++ ){ Hoge3(); Hoge4(); } } private static void Hoge1(){ System.out.println("Hoge1"); } private static void Hoge2(){ System.out.println("Hoge2"); } private static void Hoge3(){ System.out.println("Hoge3"); } private static void Hoge4(){ System.out.println("Hoge4"); } } こんな例でいいのかな。 >class { >・メソッド(1){}; >・メソッド(2){}; >for (int i = 1 ; i <= 2000 ; i++){ >・メソッド(3){}; >・メソッド(4){}; >} >} やりたいことが明確なのだからそのままコード化するだけかと思うのですが。 メソッドとかの意味がまだ理解できていないってことなのかな?

mami_try
質問者

お礼

お礼を言うの遅くなりまして大変失礼しました。 ありがとうございました。 いただいたアドバイスをもとに、 考え直し、 理解する事ができました! 感謝しております。 ありがとうございました!

その他の回答 (4)

  • 0mie0
  • ベストアンサー率0% (0/1)
回答No.5

No.4です。 ↓の方がきちんとメソッドも作って説明してくださってますね… すみません、No.3の方と同じ事が言いたいのでNo.3さんをご参考に。

mami_try
質問者

お礼

お礼を言うの遅くなりまして大変失礼しました。 確かにそうですね! NO3さんや、0mie0さんのアドバイスを もとに解決する事ができました。 とても感謝しております。

  • 0mie0
  • ベストアンサー率0% (0/1)
回答No.4

私もまだ1ヶ月程度の初心者なのですが こういう事でいいんですかね? 単純にforの中にメソッド3と4(楽でわかりやすいのでprintln使用…)を放り込んだだけなんですけど。 class Lesson001 { public static void main(String[] args) { System.out.println("メソッド1"); System.out.println("メソッド2"); for(int i = 0;i < 2000;i++){ System.out.println("メソッド3"); System.out.println("メソッド4"); } } }

noname#259269
noname#259269
回答No.2

#No.1です。括弧がひとつ抜けてました。 このようなメソッドをつくり、それを呼び出せばOKです。 class var { void foo(){ for (int i=1; i<=2000; i++){ メソッド3(); メソッド4(); } } //end of foo void メソッド3(){...} void メソッド4(){...} }

mami_try
質問者

お礼

お礼を言うの遅くなりまして大変失礼しました。 いただいたアドバイスをもとに、 問題を解決する事ができました。! 少しずつですが、成長していきたいと思います。 ありがとうございました!

noname#259269
noname#259269
回答No.1

for 文自体を実行するためのメソッドが必要です。 class var { void foo(){ for (int i=1; i<=2000; i++){ メソッド3(); メソッド4(); } void メソッド3(){...} void メソッド4(){...} }

関連するQ&A

  • for文の()内のメソッドは?

    普通、String型の変数strの長さを知りたいと 思ったら str.length() で調べると思うのですが、 for 文中では、こういう風になりますよね‥‥ for (int i=0; str.length; i++) ただ、while文の()内では、ちゃんとlengthメソッドの 後に()を付けていたはず。 for文の場合の()は特殊なのかなと思うのですが、 これってどういう理屈なのでしょうか? # ;(セミコロン)がどうも怪しい感じなのですが。

    • ベストアンサー
    • Java
  • 簡単なfor文

    #include <stdio.h> int main(void) { int n; int i; for(n=0 ;n<10;n++){ for(i=0; i<=n ;i++){ printf("*"); } printf("\n"); } return(0); } こういったプログラムを実行すると、以下のように表示されるのですがなんででしょうか? * ** *** 以下略 自分の考えですと、*は毎回一つしか表示されずに改行されると思うのですが・・・ * * * * 以下略 i個分の*を表示するなどという指示をプログラムはなされていないと思うのですがなぜなんでしょうか? 一つ目のfor文では10回ループが繰り返され改行 二つ目のfor文で*を永遠に表示 といった僕の解釈ではおかしいですよね。 当方C言語初心者で、周りに聞く人がいないため教えていただけると非常に助かりますm(__)m

  • 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"); } } }

  • for文

    for文なのですが、 scanfで得た、 iを for文のi--で、一づつへらしてますが、 0でfor文がおわりますが 0で終わりの記述がない気がするんですが、 どうしてでしょか? int main(void) {    int i;    printf("正の整数を入力してください。\n");    scanf("%d",&i);    for( ; i ; i--)    printf("qが入力されました。\n");    return 0; }

  • 静的変数と静的メソッドの使い方について

    独習JAVAにてJAVAを学習しています。「コマンドライン引数を受け取り、それをスペイン語表記に変換して表示するアプリケーションを作成しなさい。例えば、OneはUno、・・・、FiveはCincoになります。静的メソッドを使って実現しなさい」という問題で躓きました。以下、私が作成したプログラムです。 class Language { static String st[] = new String[5]; //静的初期化ブロックは実行しない。 //コマンドライン引数を受け取るmainメソッドが使えないため //静的メソッド static String translation(){ for(int i = 0; i < st.length; i++) { if(st[i] == "One") return st[i] = "Uno"; if(st[i] == "Two") return st[i] = "Dos"; if(st[i] == "Three") return st[i] = "Tres"; if(st[i] == "Four") return st[i] = "Quatro"; if(st[i] == "Five") return st[i] = "Cinco"; } } //21行目 } class StaticalMethodPractice { public static void main(String args[]) { //mainメソッドが登場したので、静的変数を初期化する for(int i = 0; i < Language.st.length; i++) Language.st[i] = args[i]; //静的メソッドを実行 System.out.println(Language.translation()); } } このプログラムに対して、21行目return文が指定されていませんというエラーメッセージが出てくるのですが、そもそもreturnの使い方もよく分からないので右往左往している状況です。低級な質問かもしれませんが、よかったらアドバイスの方よろしくお願いします。

  • 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の初期化メソッドについて

    こんにちは。Javaの初心者です。 Javaの初期化メソッド(initメソッド)についてなのですが、処理を記述しても実行してくれません。 恐らく使い方が間違ってるかと思われるのですが、ネットで調べてもあまり検索結果がでてこなかったので、質問させてもらいました。 以下サンプルコード import java.lang.*; public class Test { static int a; public void init() { a = 10; } public static void main(String[] args) { System.out.println(a); } } 実行してみても、「0」と表示されるだけで、「10」と表示してくれませんでした。 どこかコードが間違えてるのでしょうか? それとも初期化メソッドはアプレット用であってアプレットで使わないと意味がないというものなのでしょうか? 因みに関係ないかと思われますが、グローバル変数は自動的に初期化される(0が代入される)ということは知っています。 ご教授の方、よろしくお願い致します。

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

    質問お願い致します。 これのソースのfor文を一つの文にするにはどのように書いたらよいでしょうか? お願い致します。 //指定された文字列が"a"と"b"の両方を含む場合はtrue、なければfalseを返す public class Mondai { public static void main(String[] args) { System.out.println("解答 :" + charBothContain("Habllow")); } public static boolean charBothContain(String str) { boolean answer1 = false; boolean answer2 = false; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == 'a') { answer1 = true; break; } } for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == 'b') { answer2 = true; break; } } return answer1 && answer2; } }

    • ベストアンサー
    • 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(); } } } } + +++ + +++++ +++ + +++++++ +++++ +++ + +++++++++ +++++++ +++++ +++ + +++++++++++ +++++++++ +++++++ +++++ +++ +

  • C#のfor文

    質問内容に合う丁度いいカテゴリが見つからなかったのでここに投稿 しました。相応しくなければご勘弁ください。 C#を勉強中です。 http://ufcpp.net/study/csharp/sp_namespace.html を読んでいたのですが、理解できないところがあったので質問します。 「エイリアス」の「サンプル」のところのコードについてです。 ----------------------------------------------------- public static double Sin(double x) { double xx = -x*x; double fact = 1; double sin = x; for(int i=0; i<100; ++i) { fact *= i; ++i; fact *= i; ++i; x *= xx; sin += x / fact; } return sin; }//Sin ----------------------------------------------------- for文の1回めのループの最終行ではfactの値が0になってランタイム エラーになると思うのですが、実際は6になるのでしょうか? (プログラムを動かして確認する方法を学ぼうとしている途中なので こういう聞き方になっています) 0になると考えた理由は以下。 ----------------------------------------------------- fact *= i; ++i; fact *= i; ++i; ----------------------------------------------------- の最初の「;」の前ではiの値が0なので1*0=0がfactの値になり、 2番めの「;」の前ではiの値が1になり、 3番目の「;」の前では0*1=0がfactの値になり、 4番目の「;」の前ではiが2になるのではないのでしょうか? for文の1回目のループが終わった直後に ----------------------------------------------------- for(int i=0; i<100; ++i) ----------------------------------------------------- での「++i」によってiは3になるのですよね? factが6になっているには、 ----------------------------------------------------- fact *= i; ++i; fact *= i; ++i; ----------------------------------------------------- の最初のfactの代入文でiの値が2、次のfactの代入文でiの値が3 になっていなければいけないように思うのですが、上の考えと合わ ないためこれ以上読み進めることができなくなりました。 たぶん、初心者ゆえの頓珍漢な質問かと思いますが、ご指導よろしく お願いします。

専門家に質問してみよう