プロが教えるわが家の防犯対策術!

学校の課題で、ループ文を使い、1-6までのカードを順に引いた場合、起こりうるパターンを全て表示するプログラムを作りなさいというのが出ました。

六枚全てを引くのだけではなく、一枚や二枚、五枚だけ引くというのもあるので、720+360+120+30+6通りがあります
下が作ったものなのですが、うまくいきません。

こういった場合、どのようなコードを書けばよいのでしょうか?for文で実現可能なのでしょうか?whileで同じ数字が出なくなるまで++するような形にするほうが良いのでしょうか?

プログラミング初心者で、よくわかっていないです。すみません。どなたか助けてください。


*printsは表示処理を行う関数です
public static void main(String[] args){

int[] numbers=new int[6];;

for(int i=0;i<numbers.length;i++){//1
for(int j=0;j<numbers.length-1;j++){//2
int o=(i+j+1)%6;
prints(numbers[i],numbers[o]);
for(int k=0;k<numbers.length-2;k++){//3

int p=(o+k+1)%6;
prints(numbers[i],numbers[o],numbers[p]);
for(int l=0;l<numbers.length-3;l++){//4
int q=(p+l+1)%6;
prints(numbers[i],numbers[o],numbers[p],numbers[q]);
for(int m=0;m<numbers.length-4;m++){//5
int r=(q+m+1)%6;
prints(numbers[i],numbers[o],numbers[p],numbers[q],numbers[r]);
for(int n=0;n<numbers.length-5;n++){//6
int s=(r+n+1)%6;
prints(numbers[i],numbers[o],numbers[p],numbers[q],numbers[r],numbers[s]);


}

}
}
}
}


}
private void prints(int... num){
for(int i=0;i<num.length;i++){
System.out.print(num[i]);
}
}
}

A 回答 (2件)

「簡単な質問」をなぜするのかという本質的な疑問はありますが....



さておき「うまくいきません」では問題外だな. せめて「どう」うまくいかないのかを言葉で書けないと.
    • good
    • 0

まじめに考える気があるなら、「考え方」を教えてもいいけど。



最近、聞きっぱなしの人が多いものでね。
特に「課題で」とかいう人には。

完成するまでには問答が多くなると思うけどね。

一応、自分ではさっきやったらできましたので、
わからないということはないです。
(コードはあげないけど)


ちなみに、再帰を使いました。
    • good
    • 0
この回答へのお礼

真面目に考えたら出来ました!ありがとうございます!

お礼日時:2014/12/05 10:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!