Java从入门到放弃篇7(for循环,while(true),if语句,创建方法,方法调用,数组,字符串实现图形)

今天,我干了3个小时的成果绘制简单图形,后续的图形会再补充的,因为明天还要早起。

首先,创建一个名为Graph的java文件,接着将下面的代码加入到文件中去。
代码:

import java.util.*;

/**
 * created time by 2021-3-3
 * @author Mr.Pan_学狂
 * Java编程实现图形
 */

class Graph{
	public static void main(String[] args) {
		//原始方法,用System.out.println()绘制图形
		System.out.println("Java使我快乐!!\n");
		System.out.println("*");
		System.out.println("***");
		System.out.println("*****");
		System.out.println("*******");
		System.out.println("*********\n");
		
		System.out.println("正序直角三角形");
		//定义一个字符串graph
		String graph = "*";
		String[] graph_array = new String[5];
		for(int i = 1;i < 10;i+=2) {
			if(i % 2 != 0 && i != 1) {//如果是奇数且不为1的情况,执行
				graph = graph + "**";
				int Index = (i-1)/2;//通过简单计算,找出i跟数组的Index索引之间的关系。
				graph_array[Index] = graph;
				System.out.println(graph);
			}
			else {
				graph_array[i-1] = graph;//第一个元素进入数组
				System.out.println(graph);
			}
		}
		//获取数组的长度,目的是为了倒序遍历数组中的元素。
		int Length = graph_array.length;
		System.out.println();
		System.out.println("三角形倒序输出");
		for(int s = Length-1;s >= 0;s--) {//倒序输出
			System.out.println(graph_array[s]);
		}	
		System.out.println();
		System.out.println("三角形正序输出");
		for(int w = 0;w < Length;w++) {//正序输出
			//if(w % 2 ==0) {//如果是偶数
			System.out.println(graph_array[w]);
			//}
		}

		System.out.println();//换行
		Scanner imp = new Scanner(System.in);//获取键盘的输入
		System.out.println("请输入长方形的长度:");
		int number1 = imp.nextInt();//输入长方形的长
		System.out.println("请输入长方形的宽度:");
		int number2 = imp.nextInt();//输入长方形的宽
		graph2(number1,number2);//调用函数绘制长方形
		graph3();
		graph4();
		graph5();
		graph6();
		graph7();
		graph8();
	}
	
	public static void graph2(int number,int number2){//绘制长方形的方法,定义了两个参数,分别是长和宽。
		String graph = "*";
		while(true) {
			graph = graph + "*";
			if(graph.length() == number) {//绘制长方形的长
				break;
			}
		}
		for(int i = 0;i < number2;i++){//循环是为了绘制出长方形
			System.out.println(graph);
		//System.out.println(graph.length());
		}
		System.out.println();
}
	public static void graph3() {//绘制一个倒序的等腰三角形,
		Scanner imp = new Scanner(System.in);//获取键盘的输入
		System.out.println("请输入数字绘制,\n倒序等腰三角形:");
		int number = imp.nextInt();//输入整数
		if(number % 2 == 0) {//如果是偶数的情况
			number = number - 1;/*目的是为了输入的无论是奇数偶数,
								结果都是奇数输出。偶数变成奇数*/
		}
		String graph = "*";
		String[] str_array = new String[number/2+1];
		int start = 0;//从0开始索引
		str_array[start] = graph;
		while(true) {
			graph = graph + "*";
			if(graph.length() % 2 != 0) {
				start += 1;//每次索引都会加一
				str_array[start] = graph;
			}
			if(graph.length() == number) {
				break;
			}
		}
		int Length = str_array.length;
		System.out.println("----倒序三角形----");
		String BackSpace = " ";//定义空格,空字符。
		while(true) {//设置一个可控的死循环
			String BS = " ";//将BS空格字符固定
			String element = BackSpace + str_array[Length-1];
			System.out.println(element);
			BackSpace += BS;//每次循环空格都会规律性地增加一个单位。
//			BackSpace += BackSpace;
			Length = Length - 1;
			if(Length == 0) {
				break;
			}
		}
		System.out.println();
	}
	
	public static void graph4() {
		Scanner imp = new Scanner(System.in);//获取键盘的输入
		System.out.println("请输入数字绘制,\n正序等腰三角形:");
		int number = imp.nextInt();//输入整数
		if(number % 2 == 0) {//偶数转成奇数
			number = number - 1;
		}
		String graph = "*";
		String[] str_array = new String[number/2+1];//根据输入的数字与索引计算出的规律
		int Length = str_array.length;//获取数组长度
		int start_value = 0;//设置索引的初始值
		str_array[start_value] = graph;//数组对应的索引的字符值
		String BS = " ";//创建空格字符
		String BackSpace = " ";//创建空格字符
		while(true) {
			graph = graph + "**";//创建星号字符串,有规律的增加
			start_value += 1;//每次索引值加一
			str_array[start_value] = graph;//对应数组的索引值,添加元素
			if(graph.length() == number) {//直到最大星号长度等于输入的数字,跳出循环
				break;
			}
		}
		int Index = Length - 1;//定义数组索引开始的值
		String[] str_array_reverse = new String[number/2+1];/*定义一个类型和存储大小跟str_array一样的数组
																	,用于储存str_array的逆序输出结果*/
		while(true) {
			String element = BS+str_array[Index];//组合成每行的星号*
			str_array_reverse[Index] = element;//存进正序数组中
			BS += BackSpace;//每次空格字符自增一次。
			Index -= 1;//每次Index都会减一
			if(Index < 0) {//当索引值小于0自动结束循环
				break;
			}
		}
		for(int i = 0;i < Length;i++) {//遍历输出数组中的元素
			System.out.println(str_array_reverse[i]);//将数组中的元素,以正序输出。
		}
		System.out.println();
	}
	
	public static void graph5() {//绘制漏斗,graph4改进
		Scanner imp = new Scanner(System.in);//获取键盘的输入
		System.out.println("请输入数字绘制漏斗:");
		int number = imp.nextInt();//输入整数
		if(number % 2 == 0) {//偶数转成奇数
			number = number - 1;
		}
		String graph = "*";
		String[] str_array = new String[number/2+1];//根据输入的数字与索引计算出的规律
		int Length = str_array.length;//获取数组长度
		int start_value = 0;//设置索引的初始值
		str_array[start_value] = graph;//数组对应的索引的字符值
		String BS = " ";//创建空格字符
		String BackSpace = " ";//创建空格字符
		while(true) {
			graph = graph + "**";//创建星号字符串,有规律的增加
			start_value += 1;//每次索引值加一
			str_array[start_value] = graph;//对应数组的索引值,添加元素
			if(graph.length() == number) {//直到最大星号长度等于输入的数字,跳出循环
				break;
			}
		}
		int Index = Length - 1;//定义数组索引开始的值
		String[] str_array_reverse = new String[number/2+1];/*定义一个类型和存储大小跟str_array一样的数组
																	,用于储存str_array的逆序输出结果*/
		while(true) {
			String element = BS+str_array[Index];//组合成每行的星号*
			System.out.println(element);
			str_array_reverse[Index] = element;//存进正序数组中
			BS += BackSpace;//每次空格字符自增一次。
			Index -= 1;//每次Index都会减一
			if(Index < 0) {//当索引值小于0自动结束循环
				break;
			}
		}
		for(int i = 1;i < Length;i++) {//遍历输出数组中的元素
			System.out.println(str_array_reverse[i]);//将数组中的元素,以正序输出。
		}
		System.out.println();
	}
	
	public static void graph6() {//绘制菱形,graph5改进
		Scanner imp = new Scanner(System.in);//获取键盘的输入
		System.out.println("请输入数字绘制菱形:");
		int number = imp.nextInt();//输入整数
		if(number % 2 == 0) {//偶数转成奇数
			number = number - 1;
		}
		String graph = "*";
		String[] str_array = new String[number/2+1];//根据输入的数字与索引计算出的规律
		int Length = str_array.length;//获取数组长度
		int start_value = 0;//设置索引的初始值
		str_array[start_value] = graph;//数组对应的索引的字符值
		String BS = " ";//创建空格字符
		String BackSpace = " ";//创建空格字符
		while(true) {
			graph = graph + "**";//创建星号字符串,有规律的增加
			start_value += 1;//每次索引值加一
			str_array[start_value] = graph;//对应数组的索引值,添加元素
			if(graph.length() == number) {//直到最大星号长度等于输入的数字,跳出循环
				break;
			}
		}
		int Index = Length - 1;//定义数组索引开始的值
		String[] str_array_reverse = new String[number/2+1];/*定义一个类型和存储大小跟str_array一样的数组
																	,用于储存str_array的逆序输出结果*/
		while(true) {
			String element = BS+str_array[Index];//组合成每行的星号*
			str_array_reverse[Index] = element;//存进正序数组中
			BS += BackSpace;//每次空格字符自增一次。
			Index -= 1;//每次Index都会减一
			if(Index < 0) {//当索引值小于0自动结束循环
				break;
			}
		}
		for(int i = 0;i < Length-1;i++) {//遍历输出数组中的元素
			System.out.println(str_array_reverse[i]);//将数组中的元素,以正序输出。
		}
		for(int i = Length-1;i >= 0;i--) {//遍历输出数组中的元素
			System.out.println(str_array_reverse[i]);//将数组中的元素,以正序输出。
		}
		System.out.println();
	}
	
	public static void graph7() {
		Scanner impt = new Scanner(System.in);//创建一个输入对象,获取键盘的输入
		String graph = "*";//定义一个星号字符
		System.out.println("绘制平行四边形");
		System.out.println("请输入数字,\n绘制星号:");
		int number = impt.nextInt();//输入整数,绘制星号数
		System.out.println("请输入要绘制,\n平行四边形的行数:");
		int line_num = impt.nextInt();//输入四边形行数
		String S = " ";
		String Space = " ";
		while(true) {
			if(graph.length() == number) {//如果输入的数字是1的情况
				System.out.println(S+graph);
				S += Space;//空格字符自增1个空格
				line_num -= 1;//输入的行数控制循环的结束
				if(line_num == 0) {
					break;
				}
			}
			else if(graph.length() != number){//如果输入的数字不是1的情况
				graph = graph + "*";//固定增加一个星号字符,不可以使用graph代替,会出错!!
				if(graph.length() == number) {
					System.out.println(S+graph);//每次打印出相同的星号字符
					S += Space;//空格字符自增1个空格
					line_num -= 1;//输入的行数控制循环结束
					if(line_num == 0) {
						break;
					}
				}
			}
		}
		System.out.println();
	}

	public static void graph8() {
		System.out.println("绘制直角梯形");
		Scanner impt = new Scanner(System.in);//获取键盘的输入
		String graph = "*";//定义星号字符
		System.out.println("请输入上底:");
		int number1 = impt.nextInt();//获取输入的整数
		System.out.println("请输入下底:");
		int number2 = impt.nextInt();
		while(true) {
			if(number1 == 1) {
				System.out.println("上底为1,\n无法打印!!");//判断是否为1,当等于1的时候是三角形
				break;
			}
			else{
				if(number1 >= number2) {//梯形的上底不能大于或者等于下底
					System.out.println("上底大于或等于下底,\n无法绘制!!");
					break;
				}
			}
			graph += "*";//每次自增一个星号
			if(graph.length() >= number1) {//打印满足条件的星号
				System.out.println(graph);
				if(graph.length() == number2) {/*如果星号的长度
												达到了下底的长度,循环结束*/
					break;
				}
			}
			else {
				continue;//否则,继续循环
			}
		}
	}	
}
	

运行结果有问题,因为我的思维有一个地方绕进去了,如下图:
在这里插入图片描述
我之前设置成Length-1,后来仔细想发现如果设置Length-1应该是i == Length-1,因为i < Length是刚好索引到最后一个元素。
修改代码后,运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关于代码的解释在注释里面有,若是不理解可以询问我,我们一起探讨。
最后,感谢大家前来观看鄙人的文章,文中或有诸多不妥之处,还望指出和海涵。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页