javaの簡単な質問です
学校の課題で、ループ文を使い、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]);
}
}
}
お礼
@LECREREAD[0]の内容の最後にコンマをつけて、 my ($numbers, $dummy) = split(/,/, @LECREREAD[0]); の処理をする事で、空白を消すこと(実際空白はコンマの後ろ)で正常処理出来ました。 根本的解決になってないような気がしますが、 動くので、問題無しです! ありがとうございました。