2011-08-23 22 views
1

ここではネストされたループに問題があるとは思わなかったIam:達成したいのはこれです:AとBの2つの数を考えると1とA * Bの間のすべての数を見つける必要がありますたとえば、A = 4、B = 3私はこれを必要とする:カウント数を見つけるためのネストされたループ

 1 2 3 
     4 5 6 
     7 8 9 
     10 11 12 

私は、最初の部分を書いたが、私は私がすべての行に持つ

 for(int i=1; i<=A; i++){ 
       for(int j=1; j<=B; j++){ 
         System.out.println("?");}} 

を変更した値を書き留めることができる方法を見つけ出すことはできませんA * Bは私に与えます

1 2 3 
    2 4 6 
    3 6 9 
    4 8 12 

私はいくつか他の組み合わせも試しましたが、運が悪くて、まっすぐに見えるかもしれませんが、初めてこれに直面しています。前もって感謝します!

+1

for(int i = 1; i <= A * B; i ++)をループするのはどうですか? –

+1

希望するマトリックスのパターンを見てください。行0は1で始まり、行1は4で始まり、行2 - > 7、行3 - > 10となります。ヒント:0ではなく1でループを開始します。ヒント2:行番号とBの値の点で数式を作成します。 – Paul

答えて

3

(i-1)*B + jを試すことができます。それは、ネストされたループである必要があり、なぜ私にはわからない

int limit = A * B; 
for (int i = 1; i <= limit; i++) { 
    System.out.print(i + " "); 
    if (i % B == 0) { 
     System.out.println(); 
    } 
} 
1
for(int i=1; i<=A; i++){ 
       for(int j=1; j<=B; j++){ 
         System.out.print(B*(i - 1) + j); 
       } 
       System.out.println(); 
} 
+0

はおそらくprintlnを使用すべきではありません。 –

+0

あなたは正しいですが、質問(編集、ありがとう) –

2
for(int i=1;i<=A*B;i++) 
{ System.out.printf("%d%c",i,(i%B!=0?' ':'\n')); 
} 

for(i=1;i<A*B;i+=B) 
{ for(j=i;j<i+B;j++) 
    { System.out.printf("%d ",j); 
    } 
    System.out.println(); 
} 
+0

+1なぜ誰かがこれを落としたのか分かりません。 – Paulpro

+0

質問は約**ネストされた**ループです。 –

+0

printfがJavaで利用できないと思っていました。答えは、 'System.out.printf'を使って、より明確にすることができます。しかし、それは '%B'でなければなりません。 –

2

別のオプションは、単にループのための1を使用するのですか?しかし、これは途方もなく、単純に、ちょうど* Bに1から1以上の変数を使用して、それを数えている

for(int i=0; i < A; i++){ 
     for(int j=i*B; j<(i+1)*B; j++){ 
      System.out.print(j+1); 
     } 
     System.out.print("\n"); 
} 
4
for(int i=0; i<A; i++){ 
    for(int j=0; j<B; j++){ 
     System.out.print(B*i + (j + 1)); 
    } 
    System.out.println(""); 
} 
+0

私はこれが数学的に健全な解決であると思う。小さな修正、(B(i-1)+ j); (B *(i - 1)+ j)に変更する必要があります。 – Serith

+0

@Serithそのキャッチをありがとう。一定。また、1から0へのルーピングに切り替えました.POPのソースを持っていて、それを認識せずに編集しました。自分自身の基数を0にする。 –

1

ソリューションを働くかもしれません。

q = 0; 
for(int i=0; i<A; i++){ 
    for(int j=0; j<B; j++){ 
     q++; 
     System.out.print(q + " "); 
    } 
    System.out.println(); 
} 
関連する問題