使用Java循环输出图形的探索之旅
在这篇博客中,我们将探讨如何使用Java中的循环结构来输出各种几何图形,特别是金字塔和菱形。通过这一过程,不仅能够加深对循环的理解,还能提升编程能力。
1. 打印矩形
首先,我们从最简单的图形开始,矩形。我们使用嵌套循环来控制行和列的输出。
public class Stars {
public static void main(String[] args) {
// 外层循环控制行数
for (int i = 1; i <= 5; i++) {
// 内层循环控制每行的列数
for (int j = 1; j <= 5; j++) {
System.out.print("*"); // 打印星号
}
System.out.print("\n"); // 换行
}
}
}
输出:
*****
*****
*****
*****
*****
2. 打印半个金字塔
接下来,我们将打印半个金字塔。这里的外层循环控制行数,而内层循环控制每行的星号数量。
public class Stars {
public static void main(String[] args) {
// 外层循环控制行数
for (int i = 1; i <= 5; i++) {
// 内层循环控制每行的星号数量
for (int j = 1; j <= i; j++) {
System.out.print("*"); // 打印星号
}
System.out.print("\n"); // 换行
}
}
}
输出:
*
**
***
****
*****
3. 打印倒三角形
我们还可以打印倒三角形,通过调整循环的条件来实现。
public class Stars {
public static void main(String[] args) {
// 外层循环控制行数,从5开始递减
for (int i = 5; i > 0; i--) {
// 内层循环控制每行的星号数量
for (int j = 1; j <= i; j++) {
System.out.print("*"); // 打印星号
}
System.out.print("\n"); // 换行
}
}
}
输出:
*****
****
***
**
*
4. 打印金字塔
4.1 不带空格的金字塔
现在我们来打印一个完整的金字塔。首先,不带空格的金字塔。
public class Stars {
public static void main(String[] args) {
// 外层循环控制行数
for (int i = 1; i <= 5; i++) {
// 内层循环控制每行的星号数量
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*"); // 打印星号
}
System.out.print("\n"); // 换行
}
}
}
输出:
*
***
*****
*******
*********
4.2 带空格的金字塔
接着,我们加入空格,使金字塔更美观。
public class Stars {
public static void main(String[] args) {
int totalLevel = 5; // 总层数
// 外层循环控制行数
for (int i = 1; i <= totalLevel; i++) {
// 打印前置空格
for (int k = 1; k <= totalLevel - i; k++) {
System.out.print(" "); // 打印空格
}
// 打印星号
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*"); // 打印星号
}
System.out.print("\n"); // 换行
}
}
}
输出:
*
***
*****
*******
*********
5. 打印空心金字塔
为了实现空心金字塔,我们需要对金字塔的星号输出进行改进。
public class Stars {
public static void main(String[] args) {
int totalLevel = 5; // 总层数
// 外层循环控制行数
for (int i = 1; i <= totalLevel; i++) {
// 打印前置空格
for (int k = 1; k <= totalLevel - i; k++) {
System.out.print(" "); // 打印空格
}
// 打印星号
for (int j = 1; j <= 2 * i - 1; j++) {
// 打印空心部分
if (j == 1 || j == (2 * i - 1) || i == totalLevel) {
System.out.print("*"); // 打印边缘星号
} else {
System.out.print(" "); // 打印空格
}
}
System.out.println(); // 换行
}
}
}
输出:
*
* *
* *
* *
*********
5.2 准备输出一个菱形
准备输出一个菱形, 空心金字塔已经是上半部分了,接下列完成下半部分即可
//把 5 做成一个变量,进行更好的控制 int totalLevel = 5;
public class Starts{
public static void main(String[] args){
int totalLevel = 9; // 控制图形的层数
//输出上半部分
for(int i = 1; i <= totalLevel;i++){ //i 表示层数
//
//在输出* 之前,还要输出空格 对应空格等于 总层数 - 当前层
for(int k =1; k <= totalLevel-i ; k++){
System.out.print(" ");
}
//控制打印每层的*个数
for (int j = 1; j <= 2 * i - 1; j++ ){
//当前行的第一个位置是* ,最后一个位置也是*
if(j == 1 || j == (2*i -1) ){
System.out.print("*");
}else{
System.out.print(" ");
}
}
//这里的println 会自动换行
System.out.println("");
}
//输出下半部分
for(int i = totalLevel - 1; i > 0; i--){//控制下半部分的层数 依次递减
for (int j = 1; j <= 2*i-1; j++){ //每层输出的* 个数
System.out.print("*");
}//这里的println 会自动换行
System.out.println("");
}
}
}
*
* *
* *
* *
* *
* *
* *
* *
* *
***************
*************
***********
*********
*******
*****
***
*
6. 打印空心菱形
最后,我们扩展到空心菱形。我们将分为两个部分:上半部分和下半部分。
public class Starts{
public static void main(String[] args){
int totalLevel = 8; // 控制图形的层数
//输出上半部分
for(int i = 1; i <= totalLevel;i++){ //i 表示层数
//在输出* 之前,还要输出空格 对应空格等于 总层数 - 当前层
for(int k =1; k <= totalLevel-i ; k++){
System.out.print(" ");
}
//控制打印每层的*个数
for (int j = 1; j <= 2 * i - 1; j++ ){
//当前行的第一个位置是* ,最后一个位置也是*
if(j == 1 || j == (2*i -1) ){
System.out.print("*");
}else{
System.out.print(" ");
}
}
//这里的println 会自动换行
System.out.println("");
}
//输出下半部分
for(int i = totalLevel - 1; i > 0; i--){//控制下半部分的层数
//控制空格的输出
for(int k = 1; k <= totalLevel - i; k++ ){ //空格数量 等于 总行数 - 层数 k < totalLevel - i; k = 1 ; 不成立所以不会输出第四行的空格
System.out.print(" ");
}
//每层输出的* 个数
for (int j = 1; j <= 2 * i - 1; j++){
if(j == 1 || j == 2 * i - 1 ){
System.out.print("*");
}else {
System.out.print(" ");
}
}//这里的println 会自动换行
System.out.println("");
}
}
}
输出:
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
*
总结
通过这篇博客,我们深入探讨了使用Java循环输出各种图形的方法。掌握这些基本技巧不仅能提升我们的编程能力,还能为后续更复杂的编程挑战打下坚实的基础。希望你们能在实践中继续探索和创造出更多有趣的图形!