有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用java绘制一个三角形

我需要写一个等腰三角形与客户的高度和宽度

三角形(5,10);好的。 三角形(10,10);好的。 三角形(10,5);好的。但对于三角形(6,10),我有一个问题。我怎样才能避免这个问题?你有什么建议

问题在于,并非所有必要的观点都是一致的

我的代码如下

public class triangle1 {
    static  int num1 =0;
    public static void triangle(int height, int width) { 

      /*  double num = new BigDecimal((double)width/2/height).setScale(1, RoundingMode.DOWN).doubleValue();*/
        double num = (double) width/2/height;
      //  System.out.print(num);
        triangle(height, width, 0,0.0, num);
    }

    private static void triangle(int height, int width, int s, double amountfordivide, double num) {

        System.out.println(s+" "+ amountfordivide+ " " + num+" "+ (++num1));
        if (s++ <= height ) {
            triangle(height, width, s, amountfordivide+num, num);
          //  System.out.println();
        /*System.out.println(n +" "+ m);*/
            if (s-1 == 0) {
                for (double i = 0.0; i <= width; i = i + num) {
                    System.out.print(".");
                }
                System.out.println();
            } else  {
                for (double i = 0.0; i <= width; i = i+num) {
                    if (i == amountfordivide)  System.out.print( ".");
                    else if (i == (width - amountfordivide)) System.out.print(".");
                    else
                        System.out.print(" ");
                }
                System.out.println();
            }
        }
    }

    public static void main(String[] args) {
        triangle(10, 5);
    }

}

共 (1) 个答案

  1. # 1 楼答案

    不要认为增加双倍会达到某个确切的值。所以

     for (double i = 0.0; i <= width; i = i+num) {
    

    一定要写

     for (double i = 0.0; i <= width + num/2.0; i = i+num) {
    

    但是你有一个问题,你用==

     if (i == amountfordivide)  System.out.print( ".");
     else if (i == (width - amountfordivide)) System.out.print(".");
    

    你可以使用类似的“括号比较”

     if( amountfordivide - num/2.0 < i && i < amountfordivide + num/2.0 )
    

    另一种情况也是如此

    但最好更改计算,以便使用int循环计数器和“hot”值(amountfordivide)进行循环