nelson94 2017-06-10 15:51 采纳率: 100%
浏览 1019
已采纳

java循环打印三角形基础题,麻烦帮我看看我的代码有什么问题,为什么跑不了

图片说明package book;
import java.util.Scanner;
public class Test5_19 {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner in = new Scanner(System.in);
    System.out.println("enter the number of line");
    int numberOfLine = in.nextInt();

    for(int rows=1;rows<=numberOfLine;rows++){
        for(int space=numberOfLine-rows;space>=1;space++){
            System.out.print("  ");
        }
        for(int i=0;i<=numberOfLine-1;i++){
            int a = (int)(Math.pow(2, i));
            System.out.print(a+"  ");
        }
        for(int j=numberOfLine-1;j>=0;j--){
            int b = (int)(Math.pow(2, j));
            System.out.print(b+"  ");
        }
        System.out.println();
    }

}

}

  • 写回答

4条回答 默认 最新

  • 战在春秋 2017-06-11 00:54
    关注
     for(int space=numberOfLine-rows;space>=1;space++){ //初值为8,退出条件为小于1,但space一直在++,所以死循环
    

    修改后的代码如下:

    import java.util.Scanner;
    
    public class Test5_19 {
    
        public static void main(String[] args) {
    
            Scanner in = new Scanner(System.in);
            System.out.println("enter the number of line");
            int numberOfLine = in.nextInt();
    
            for (int row = 0; row < numberOfLine; row++) {
    
                for (int space = 0; space < (numberOfLine - row - 1); space++)
                    System.out.print("     ");
    
    
                for (int column = 0; column <= row; column++)
                    print_val((int) Math.pow(2, column));
    
    
                for (int column = row - 1; column >= 0; column--)
                    print_val((int) Math.pow(2, column));
    
    
                System.out.println();
            }
    
        }
    
        static void print_val(int n1) {  //不同位数打印不同空格
            if (n1 > 0 && n1 < 10)
    
                System.out.print("    ");
            else if (n1 > 9 && n1 < 100)
    
                System.out.print("   ");
            else
                // Print 2 spaces for other values
                System.out.print("  ");
    
    
            System.out.print(n1);
    
        }
    }
    

    考虑了输出格式,时间关系,没有加太多注释,您可以上机测试一下。

    用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载