for循环要点
1.确认外层控制内容
2.确认内层控制内容
3.将打印内容与行号产生关系式
4.有的语句可以用if语句,根据字符的个数来增减char,优化代码
//部分类型只能输出奇数行,可在下半部分开始前,对行数做一个判断,根据讲述奇偶性调整自变量的取值;如下语句中的k
int k = i;
if (0 == line % 2) {
k = i - 1;
}
for (int j = 1; j <= k; j++) {
//偶数行的一半就是行数/2,奇数行的中间一行可以放在上半部分,先定义下半部分行数为 int = line / 2 ;再用总行数减去下半部分得到上半部分数值
int cn = 2 * i - 1;//cn == charNumber
int bacCharNum = cn / 2;
int froCharNum = cn - bacCharNum;
难度系数:重辣
/*
难度系数:重辣
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
*/
class Demo8 {
public static void main(String[] args) {
char ch = 'A';
int line = 10;
for (int i = 1; i <= line;i++) {
ch = 'A';
//输出空格
for (int j = 1; j <= line - i; j++) {
System.out.print(" ");
}
int cn = 2 * i - 1;
int bacCharNum = cn / 2;
int froCharNum = cn - bacCharNum;
//输出每行的前半部分
for (int j = 1;j <= froCharNum ;j++) {
System.out.print(ch);
ch++;
}
//输出每行的后半部分
ch -= 2;
for (int j = 1;j <= bacCharNum ;j++) {
System.out.print(ch);
ch--;
}
System.out.println();
}
}
}
/*
输出结果:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
*/
//难度系数:重辣
//优化方案:将每行打印中的字母用if语句改写
/*
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
*/
class Demo88 {
public static void main(String[] args) {
char ch = 'A';
int line = 10;
for (int i = 1; i <= line;i++) {
ch = 'A';
ch --;
//输出空格
for (int j = 1; j <= line - i; j++) {
System.out.print(" ");
}
int cn = 2 * i - 1;
int bacCharNum = cn / 2;
int froCharNum = cn - bacCharNum;
for (int j = 1;j <= cn ;j++) {
if (j < froCharNum) {
ch++;
} else if (j == froCharNum) {
ch++;
} else {
ch--;
}
System.out.print(ch);
}
System.out.println();
}
}
}
难度系数:魔鬼辣
/*
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
*/
class Demo9 {
public static void main(String[] args) {
char ch = 'A';
int line = 11;//仅限奇数
int downPart = line / 2;
int upPart = line - downPart;
for (int i = 1; i <= upPart;i++) {
ch = 'A';
for (int j = 1; j <= upPart - i; j++) {
System.out.print(" ");
}
int cn = 2 * i - 1;
int bacCharNum = cn / 2;
int froCharNum = cn - bacCharNum;
for (int j = 1;j <= froCharNum ;j++) {
System.out.print(ch);
ch++;
}
ch -= 2;
for (int j = 1;j <= bacCharNum ;j++) {
System.out.print(ch);
ch--;
}
System.out.println();
}
for (int i = 1;i <= downPart; i++) {
ch = 'A';
int cn = 2 * downPart + 1 - 2 * i;
int bacCharNum = cn / 2;
int froCharNum = cn - bacCharNum;
for (int j = 1; j <= i; j++) {
System.out.print(" ");
}
for (int j = 1;j <= froCharNum; j++) {
System.out.print(ch);
ch ++;
}
ch -= 2;
for (int j = 1;j <= bacCharNum; j++) {
System.out.print(ch);
ch --;
}
System.out.println();
}
}
}
/*
//难度系数:魔鬼辣
//优化方案:调整为偶数也可以
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
*/
class Demo99 {
public static void main(String[] args) {
char ch = 'A';
int line = 12;
int downPart = line / 2;
int upPart = line - downPart;
for (int i = 1; i <= upPart;i++) {
ch = 'A';
for (int j = 1; j <= upPart - i; j++) {
System.out.print(" ");
}
int cn = 2 * i - 1;
int bacCharNum = cn / 2;
int froCharNum = cn - bacCharNum;
for (int j = 1;j <= froCharNum ;j++) {
System.out.print(ch);
ch++;
}
ch -= 2;
for (int j = 1;j <= bacCharNum ;j++) {
System.out.print(ch);
ch--;
}
System.out.println();
}
for (int i = 1;i <= downPart; i++) {
ch = 'A';
int cn = 2 * downPart + 1 - 2 * i;
int bacCharNum = cn / 2;
int froCharNum = cn - bacCharNum;
int k = i;
if (0 == line % 2) {
k = i - 1;
}
for (int j = 1; j <= k; j++) {
System.out.print(" ");
}
for (int j = 1;j <= froCharNum; j++) {
System.out.print(ch);
ch ++;
}
ch -= 2;
for (int j = 1;j <= bacCharNum; j++) {
System.out.print(ch);
ch --;
}
System.out.println();
}
}
}