定义了两个数组,{p,q,r},{0,1},怎么将0,1赋值给p,q,r,使各种组合情况都出现,一共8种情况
最后打印出各种组合
000
001
010
...
111小弟拜谢各位了!

解决方案 »

  1.   

       for(int i=0;i<2;i++){
          p=n[i];
          for(int j=0;j<2;j++){
            q=n[j];
            for(int k=0;k<2;k++){
              r=n[k];
              System.out.println(p+""+q+""+r);
            }
          }
        }
      

  2.   

    楼上的这种情况,p、q、r都不是数组的吧?
      

  3.   


    int p, q, r;
    for (int i = 0; i < (1 << 3); i++) {
        p = (i >> 2) & 1;
        q = (i >> 1) & 1;
        r = i & 1;
        System.out.printf("%d%d%d\n", p, q, r);
    }
      

  4.   

            int p,q,r;
            int[] n={0,1};
            for(int h=0;h<2;h++){
               p=n[h];
               for(int j=0;j<2;j++){
               q=n[j];
               for(int k=0;k<2;k++){
               r=n[k];
                      int[] a={p,q,r};
               System.out.println(a[0]+""+a[1]+""+a[2]);
               }
               }
            }
      

  5.   

    public class Main {
    public static void main(String[] args) {
    int[] p = new int[8];
    int[] q = new int[8];
    int[] r = new int[8];

    //总共有八种组合,也就是0-7的二进制位
    String temp;
    int len = 0;
    for(int i=0; i<8; i++) {
    temp = Integer.toBinaryString(i);
    // 在位数小于3的前面补0
    len = temp.length();
    for(int j=0; j<3-len; j++) {
    temp = "0" + temp;
    }

    //因为0的ascii编码为48,相减的结果就是数字0-9
    p[i] = temp.charAt(0) - 48;
    q[i] = temp.charAt(1) - 48;
    r[i] = temp.charAt(2) - 48;
    }

    //输出结果
    for(int i=0; i<p.length; i++) {
    System.out.println(p[i] + "-" + q[i] + "-" + r[i]);
    }
    }
    }