嵌套循环与方法学习小结
嵌套循环练习:
1、使用嵌套循环打印输出下列图案
思路:该图案共11行,将图案拆分为上下两个部分,
上部分:
上部分共6行,故最外循环条件为小于等于6;由于每行字符自增1,故循环打印输出字符后,字符自增1。
内层循环打印输出空格:由下每行空格数可知该层循环条件为小于等于6-i;
内层循环打印输出字符:由下每行字符数可知该层循环条件为小于等于2*i-1;
当该部分循环完成后,此时字符为该部分最后一行输出字符的下一字符,在本题中为G。
下部分:
下部分共5行,故最外循环条件为小于等于5;由于本题中本行应打印 E,然后上部分打印输出后此时字符为G,故字符应先减2,然后每行字符自减1,故循环打印输出字符后,字符自减1。
内层循环打印输出空格:由下每行空格数可知该层循环条件为小于等于i;
内层循环打印输出字符:由下每行字符数可知该层循环条件为小于等于(5-i)*2+1.
/* L _ ch
A 1 5 1
BBB 2 4 3
CCCCC 3 3 5
DDDDDDD 4 2 7
EEEEEEEEE 5 1 9
FFFFFFFFFFF 6 0 11
__________________________________
EEEEEEEEE 1 1 9
DDDDDDD 2 2 7
CCCCC 3 3 5
BBB 4 4 3
A 5 5 1
*/
public class Demo1 {
public static void main(String[] args) {
int line = 18;
int row = line / 2 + 1;
char ch = 'A';
//菱形上半部分
for (int i = 1; i <= row ; i++) {
for (int j = 1; j <= row - i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print(ch);
}
ch++;
System.out.println();
}
ch -= 2;
//菱形下半部分
for (int i = 1; i <= row - 1; i++) {
for (int j = 1; j <= i; j++) {
System.out.print( " ");
}
for (int k = 1; k <= (row - i - 1) * 2 + 1; k++) {
System.out.print(ch);
}
ch--;
System.out.println();
}
}
}
2、使用嵌套循环打印输出下列图案
思路:与1相似,通过if else结构判断对左右部分分别进行字符自增自减操作即可。
/* 左 L _ ch ch 右
|A 1 5 1 0 A 1
A|BA 2 4 3 1 B 2
AB|CBA 3 3 5 2 C 3
ABC|DCBA 4 2 7 3 D 4
ABCD|EDCBA 5 1 9 4 E 5
ABCDE|FEDCBA 6 0 11 5 F 6
____________________________________________________
ABCD|EDCBA 1 1 9 4 E 5
ABC|DCBA 2 2 7 3 D 4
AB|CBA 3 3 5 2 C 3
A|BA 4 4 3 1 B 2
|A 5 5 1 0 A `1
*/
public class Demo2 {
public static void main(String[] args) {
int line = 11;
int row = line / 2 + 1;
for (int i = 1; i <= row; i++) {
for (int j = 1; j <= row - i; j++) {
System.out.print(" ");
}
char ch = 'A';
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print(ch);
if (k < i) {
ch++;
} else {
ch--;
}
}
System.out.println();
}
for (int i = 1; i <= row - 1; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(" ");
}
char ch = 'A';
for (int k = 1; k <= (row - i - 1) * 2 +1; k++ ){
System.out.print(ch);
if ( k < row - i) {
ch++;
} else {
ch--;
}
}
System.out.println();
}
}
}
方法
作用:1、复用。 2、提高效率
格式:以main方法为例:
public static void main(String[] args) {
}
/*
public static : 暂时不学习,暂认为固定格式
void: 返回值类型 void 表示当前方法没有返回值
返回值类型是当前方法运行完成之后对方法外的一个返回数据
main: 方法名,方法名是一个名字,要求符合命名规范
小驼峰命名法,见名知意,动宾结构
(形式参数列表): 当前方法运行所需的外来数据,这里需要告知调用者数据类型
{}: 方法体
方法格式:
public static 返回值类型 方法名(形式参数列表) {
方法体
}
eg:
/*
需求:
打印n次用户自定义的字符串
方法分析:
固定格式:public static
返回值类型:这里打印输出n次用户自定义的字符串,无需返回值
方法名:printCustomMessage
形式参数列表:需要用户输入一个正整数,与一个字符串
(int num,String str)
【方法声明】
public static void printCustomMessage(int num,String str)
*/
class Demo1 {
public static void main(String[] args) {
printCustomMessage(10,"学习");
}
/**
*形式参数: num:int型变量,定义循环次数
* str: String类型变量,定义打印输出的字符串
*作用: 自定义循环次数与输出信息,
* 按照num定义的循环次数,循环打印num次自定义的字符串。
**/
public static void printCustomMessage(int num,String str) {
for (int i = 0; i <= num; i++) {
System.out.println(str);
}
}
}
形式参数与实际参数
形式参数:eg:
public static void printNum(int num)
num即为一个形式参数,可理解为一个记号,系统并未对其分配内存空间。
实际参数:eg:
int num = 1;
num即为一个实际参数