java输出各种三角形(*表示)

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 9; j++) {
            for (int i = 1; i <= 5; i++) {

                System.out.print("* ");}
                System.out.println();
            }
        }
    }

最近在尝试做一些当初开始学习JAVA时的一些很基础的题目,同时也把以前没学完的CS61B从头又啃一遍。
很多东西经过长时间的沉淀,再次去领悟的时候获得的内容都与从前大不相同。
不过很惭愧的是,我的能力欠佳,所以一些简单的题目也花费了不小的时间,所以动笔把一些内容记录下来。

上面的代码片源于我第一次做HW0,这是老师布置的一个作业。

输出三角形(衍生出很多类型的三角形)

  1. 以首部代码块为例,这输出的并不是一个三角形,而是一个规格为(长x宽):9x5的矩形。
  2. 等腰直角三角形(长宽同)
  3. 等腰三角形
  4. 倒三角
  5. 上下双拼三角

一:

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 9; j++) { //for循环遍历,这个j表示输出的行数
            for (int i = 1; i <= 5; i++) {//嵌套的循环,这个i表示输出的列数,这里表示一行有5个*
				 System.out.print("* ");}
                System.out.println();
            }
        }
    }

二:(靠左侧)
与输出矩形不同的一点时,如果要输出等腰直角三角形的话,要控制每一行每一列的*数与该行数字相同。
因此,j正常循环,表示输出的三角形的行数。
那么要保证i要与j一致,所以在嵌套的循环中,i将与j做比较。

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 9; j++) {
            for (int i = 1; i <= j; i++) {//嵌套中的循环i与j比较,j输出1时,i同时也输出1,保证了每行每列的*数都与该行对应数字相等。

                System.out.print("* ");}
                System.out.println();
            }
        }
    }

还有一种情况是靠右侧的等腰直角三角形,我一开始的想法是,可以理解成输出一个包含(空格+🌟号)的矩形:
以边长为3距离,第一行有2个空格+1个*号,其他行以此类推。
但是输出结果是这样的:输出了一条斜线,且这里有空行,应该是println的原因。

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= ; j++) {
            for (int i = 1; i <= 3-j; i++) {

                System.out.print(" ");}
            System.out.print("*");
                System.out.println();
            }
        }
    }
   

在这里插入图片描述

改正后:

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 3; j++) {
            for (int i = 1; i <= 3-j; i++) {
                System.out.print(" ");
            }
            for (int i = 1; i <= j; i++) {
                System.out.print("*");//空号后面加入了*
            }
            System.out.println();
        }
    }

}

三:

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 4; j++) {
            for (int i = 1; i <= 4-j; i++) {
                System.out.print(" ");
            }
            for (int i = 1; i <= j; i++) {
                System.out.print("*");
            }
            for (int x =1; x <= j-1;x++) {//等腰三角形,从第二行开始添加一个比原先小一行规模的等腰直角三角形
                System.out.print("*");//从空格后接上继续输出
            }
            System.out.println();
        }
    }

}

结果:请添加图片描述

四:
倒三角,也可以从矩形的角度开始理解。
可以分为靠右倒三角,靠左倒三角,等腰倒三角。(全部以四行为例)
靠右倒三角为:

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 4; j++) {
            for (int i = 4; i >=j ; i--) {
                System.out.print("*");
            }
           /** for (int x = 1; x <= j; x++) {
                System.out.print(" ");
            }
**/ //这里并不需要空格
            System.out.println();
        }
    }

}

靠左倒三角为:

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 4; j++) {
          for (int x = 2; x <= j; x++) {
                System.out.print(" ");//x从2开始,表示在第二行进行遍历循环输出空格,每行依次递增
            }
            for (int i = 4; i >=j ; i--) {
                System.out.print("*");//空格之后输出*,搞清楚这些符号的数字关系
            }
            System.out.println();
        }
    }

}

请添加图片描述

等腰倒三角:

【插曲:在写代码的时候,误打误撞写出了输出平行四边形,代码如下(平行四边形)】:
是为矩形变体

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 4; j++) {
          for (int x = 2; x <= j; x++) {
                System.out.print(" ");
            }//整体输出一个靠右的等腰三角形
            for (int i = 1; i <=3 ; i++) {//矩形变体4x3
                System.out.print("*");
            }
            System.out.println();
        }
    }

}

等腰倒三角:

 package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 4; j++) {
          for (int x = 2; x <= j; x++) {
                System.out.print(" ");
            }
            for (int i = 4; i >=j ; i--) {
                System.out.print("*");
            }//输出一个靠右倒三角
           for(int a=3;a>=j;a--){
               System.out.print("*");
           }//再来一个小规模的靠左倒三角(3行)
            System.out.println();
        }
    }

}

结果:
请添加图片描述

五:上下双拼三角形

package triangle;

public class triangle {
    public static void main(String[] args) {
        for (int j = 1; j <= 4; j++) {
            for (int x = 3; x >= j; x--) {
                System.out.print(" ");
            }
            for (int i = 1; i <= j; i++) {
                System.out.print("*");
            }
            for (int x =1; x <= j-1;x++) {//等腰三角形,从第二行开始添加一个比原先小一行规模的等腰直角三角形
                System.out.print("*");//从空格后接上继续输出
            }
            System.out.println();
        }
        for(int a=1;a<=3;a++){
            for(int b=1;b<=a;b++){
                System.out.print(" ");
            }
            for(int c=3;c>=a;c--){
                System.out.print("*");
            }//递减的规律是列要与行进行对比,而不是简单的数字对比。如果是c>=3,那么就成了平行四边形。
            for(int c=1;c>=a-1;c--){
                System.out.print("*");
            }//这里拼接了一个原有规模(4行)小两次的三角形。
            System.out.println();
        }
    }
}

结果:
请添加图片描述

最后这个代码过于冗杂,一直都是for循环嵌套,后面我会寻找简单的结构优化代码。

  • 35
    点赞
  • 144
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 使用命令行编写输出一首古诗的程序: ``` echo "春眠不觉晓, 处处闻啼鸟。 夜来风雨声, 花落知多少。" ``` 2. 使用 Eclipse 编写输出三角形的程序: ```java public class Triangle { public static void main(String[] args) { for (int i = 1; i <= 3; i++) { for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); } } } ``` 3. 使用 Eclipse 编写输出等腰三角形的程序: ```java public class IsoscelesTriangle { public static void main(String[] args) { for (int i = 1; i <= 5; i += 2) { for (int j = 0; j < (5 - i) / 2; j++) { System.out.print(" "); } for (int k = 1; k <= i; k++) { System.out.print("*"); } System.out.println(); } } } ``` ### 回答2: 1、使用命令行编写输出一首古诗程序: ```bash echo "静夜思" echo "床前明月光" echo "疑是地上霜" echo "举头望明月" echo "低头思故乡" ``` 这段代码使用`echo`命令在命令行上逐行输出了一首古诗《静夜思》,对应五句分别表示诗的每一行。 2、使用Eclipse编写输出三角形程序: ```java public class Triangle { public static void main(String[] args) { for (int i = 1; i <= 3; i++) { for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); } } } ``` 这段代码使用两个嵌套的循环,在Eclipse中编写Java代码实现了输出一个三角形,其中外层循环控制行数,内层循环控制每一行的星号数。 3、使用Eclipse编写输出等腰三角形程序: ```java public class IsoscelesTriangle { public static void main(String[] args) { for (int i = 1; i <= 3; i++) { for (int j = 3; j > i; j--) { System.out.print(" "); } for (int k = 1; k <= 2 * i - 1; k++) { System.out.print("*"); } System.out.println(); } } } ``` 这段代码同样是使用两个嵌套的循环,在Eclipse中编写Java代码实现了输出一个等腰三角形,其中外层循环控制行数,第一个内层循环控制每一行前面的空格数,第二个内层循环控制每一行的星号数。 ### 回答3: 1、使用命令行可以使用echo命令输出一首古诗,每一句作为一行: ``` echo "白日依山尽" echo "黄河入海流" echo "欲穷千里目" echo "更上一层楼" ``` 2、使用命令行可以通过循环结构输出三角形,每一行递增一个星号: ``` for ((i=1; i<=3; i++)) do for ((j=1; j<=i; j++)) do echo -n "*" done echo done ``` 3、使用命令行可以通过循环结构输出等腰三角形,每一行递增奇数个星号: ``` for ((i=1; i<=3; i++)) do for ((j=1; j<=2*i-1; j++)) do echo -n "*" done echo done ``` 在Eclipse中编写相同的程序可以使用Java语言实现。 1、输出一首古诗: ```java public class Poem { public static void main(String[] args) { System.out.println("白日依山尽"); System.out.println("黄河入海流"); System.out.println("欲穷千里目"); System.out.println("更上一层楼"); } } ``` 2、使用*号输出三角形: ```java public class Triangle { public static void main(String[] args) { for (int i=1; i<=3; i++) { for (int j=1; j<=i; j++) { System.out.print("*"); } System.out.println(); } } } ``` 3、使用*号输出等腰三角形: ```java public class IsoscelesTriangle { public static void main(String[] args) { for (int i=1; i<=3; i++) { for (int j=1; j<=2*i-1; j++) { System.out.print("*"); } System.out.println(); } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值