打印图形
画图题的解决方法:首先是要确定要画图形的各个参数如图形的边数、打印的字符;然后确定每一行要输出的字符数和空格数(字符和空格数的初始值);从输出的字符数和空格数推测出是递增还是递减;最后是判断终止条件或者是变换方向的条件。
通常是以下代码
public static void XX(){
//变量number(一般是行数/作为循环次数)
int number = 10;
//输出的字符串
String str = "* ";
//n - 这一行str的数量(首行打印的次数)
int n = number;
//m - 这一行开始空格的数量(首行空格数)
int m = 0;
//标志位 - 控制方向 true->递减 false->递增(判断是否需要变换打印如本例的菱形)
boolean flag = true;
//循环输出每行的打印
for(;n <= number;){
//输出m个空格
for(int i = 0; i < m; i++){
System.out.print(" ");
}
//输出n个str字符串
for(int i = 0; i < n; i++){
System.out.print(str);
}
if(n == 1){
//调换方向
flag = false;
}
if(flag){
//下一行str递减,空格要递增
m++;
n--;
} else {
m--;
n++;
}
//输出完一行,换行
System.out.println();
}
}
三角形
打印三角形,从形状可以判断要输出的字符是“* ”,要打印的行数是8;要打印的字符数跟行数一致也就是说逐行递增而空格是逐行递减,终止的条件可以直接用for循环8次即可。
public static void Triangle(){
//图形要输出的行数
int number = 8;
//图形要输出的字符串
String str = "* ";
//输出的空格
int m = number;
//每行要输出字符串的数量
int n = 1;
for(;n <= number;){
//输出空格
for (int i = 0; i < m; i++) {
System.out.print(" ");
}
//输出字符串
for (int i = 0; i < n; i++) {
System.out.print(str);
}
m--;
n++;
System.out.println();
}
}
菱形
打印菱形,从形状可以判断要输出的字符是“* ”,要打印的行数是11但是需要循环12此才能打印出;要打印的字符数跟行数一致也就是说逐行递增而空格是逐行递减但是到了第六行行数跟字符数是递减关系、和空格数是递增关系,所以在打印第六行要做一个转向变换的条件(n == number/2)。终止的条件为输出的字符数小于1即可。
public static void Diamond(){
//变量number
int number = 12;
//输出的字符串
String str = "* ";
//n - 这一行str的数量
int n = 1;
//m - 这一行开始空格的数量
int m = number;
//标志位 - 控制方向 true->递增 false->递减
boolean flag = true;
for(;n >= 1;){
// 输出空格
for (int i = 0; i < m; i++) {
System.out.print(" ");
}
//输出字符
for (int i = 0; i < n; i++) {
System.out.print(str);
}
if(n == number/2){
//调换方向
flag = false;
}
if(flag){
m--;
n++;
} else {
//下一行str递减,空格要递增
m++;
n--;
}
//输出完一行就换行
System.out.println();
}
}
上面图形是从菱形转换出一个新图形,从形状可以判断要输出的字符是“* ”,要打印的行数是11但是可以通过6次循环打印出这个图形;要打印的字符数跟行数一致也就是说逐行递减而空格是逐行递增但是到了第六行行数跟字符数是递增关系、和空格数是递减关系,所以在打印第六行要做一个转向变换的条件(n == 1)。终止的条件为输出的字符数大于行变量number即可。
public static void graph(){
//变量number
int number = 6;
//输出的字符串
String str = "* ";
//n - 这一行str的数量
int n = number;
//m - 这一行开始空格的数量
int m = 0;
//标志位 - 控制方向 true->递减 false->递增
boolean flag = true;
//循环输出每行的打印
for(;n <= number;){
//输出m个空格
for(int i = 0; i < m; i++){
System.out.print(" ");
}
//输出n个str字符串
for(int i = 0; i < n; i++){
System.out.print(str);
}
if(n == 1){
//调换方向
flag = false;
}
if(flag){
//下一行str递减,空格要递增
m++;
n--;
} else {
m--;
n++;
}
//输出完一行,换行
System.out.println();
}
}
平行四边形
平行四边形打印打印8行可以直接循环即可,输出的字符可以一个一个输出也可以直接一次性输出,空格是递减
public static void Parallelogram(){
//图形要输出的行数
int number = 8;
//图形要输出的字符串
String str = "* ";
//输出的空格
int m = number;
//每行要输出字符串的数量
int n = number;
for (;m >= 0;) {
//输出空格
for (int i = 0; i < m; i++) {
System.out.print(" ");
}
//输出字符串
for (int i = 0; i < n; i++) {
System.out.print(str);
}
m--;
System.out.println();
}
}