循环练习题,想不出右边部分怎么实现(同左边第1竖到第7竖一样),发帖求指点。脑子转得不快,老想不出来,郁闷。希各位网友指点一二。谢谢
小弟我不懂英语和拼音,变量暂时用字母表示了。
public class jkl {
public static void main(String[] args) {
        int i = 1,k = 1,s = 0;                              
for(int a = 1; a <= 8; a++){//循环行数
for(int y = 1; y <= 8 - a; y++){//循环每行的空格数,一个数字,和三个空格
System.out.print("    ");
}
for(int t = 1; t <= a; t++){//控制输入数字(左边部分)
if(t == 1){
System.out.print("   " + t);//输出t为1
}else{
s = i * 2;
i = s;
if(i<10){
System.out.print("   " + i);//输出i小于10的数值
}else if(i>=10&&i<100){
System.out.print("  " + i);//输出i小于100的数值
}else{
System.out.print(" " + i);//输出i大于100的数值
}
if(t == a)//重新计算i值
i = k;
}
}
for(int r = a-1; r >= 1; r --){//右边部分的循环,这个循环我想不出来
System.out.print("   " + r);//输出r值
}
System.out.println();//换行
        }
}}

解决方案 »

  1.   

    最快截方法,debug跟着运行一次就行了。
      

  2.   

    代码写的好乱O_O
    我替你跟改了下:
    public class jkl { public static void main(String[] args) { final int k = 1;// 重置值
    int s = 0;//
    int i = 1;// for (int a = 1; a <= 8; a++) {// 循环行数
    for (int b = 1; b < 8 - a + 1; b++) {// 控制形状
    System.out.print(" ");
    }
    for (int t = 1; t <= a; t++) {// 控制输入数字(左边部分)
    if (t == 1) {
    System.out.print(" " + t);// 输出t为1
    } else {
    s = i * 2;
    i = s;
    System.out.print(" " + i);
    }
    // 确认循环结束,重置i的值
    if (t == a)
    i = k;
    } for (int r = a - 1; r >= 1; r--) {// 右边部分的循环
    System.out.print(" " + (int) Math.pow(2, r - 1));// 输出r值
    }
    System.out.println();
    }
    }
    算法没错,只是数学稍微差了点
      

  3.   


    public class jkl {
        public static void main(String[] args) throws IOException {
               String str[] = new String[8];
               for(int i=0; i < 8; i++){
                   for(int j=8;j > i;j-- ){
                       str[j-1] = getStr(j);
                   }
               }
               int length = str[7].length();
               for(int i=0; i < 8; i++){
                   for(int j = 0; j<(length - str[i].length())/2;j++){
                       System.out.print(" ");
                   }
                   System.out.println(str[i]);
               }
        }
        public static  String getStr(int j){
            int i=0;
            String str = "";;
            for(i=0; i < j; i++){
                int tmp = (int)Math.pow(2,i);
                if(tmp < 10){
                    str += (int)Math.pow(2,i)+"   ";
                }
                else if(tmp >= 10 && tmp < 100){
                    str += (int)Math.pow(2,i)+"  ";
                }else{
                    str += (int)Math.pow(2,i)+" ";
                }
            }
            i -= 1;
            while(i > 0){
                str += i+"   ";
                i--;
            }        return str;
        }
    }结果是这样的
                                    1   
                            1   2   1   
                        1   2   4   2   1   
                    1   2   4   8   3   2   1   
                1   2   4   8   16  4   3   2   1   
            1   2   4   8   16  32  5   4   3   2   1   
        1   2   4   8   16  32  64  6   5   4   3   2   1   
    1   2   4   8   16  32  64  128 7   6   5   4   3   2   1   如果用一个空格,结果是这样的,中间那个好像对不齐                  1 
                  1 2 1 
                1 2 4 2 1 
              1 2 4 8 3 2 1 
            1 2 4 8 16 4 3 2 1 
         1 2 4 8 16 32 5 4 3 2 1 
       1 2 4 8 16 32 64 6 5 4 3 2 1 
    1 2 4 8 16 32 64 128 7 6 5 4 3 2 1 
    不知道是不是你要的。