Day04
- 循环语句结构概述和for 语句的格式及其使用
(1) 循环结构的分类:for ; while; do…while;
(2) for语句的格式
for (初始化表达式;条件表达式;循环后的操作表达式) {
循环体;
}
(3) 执行流程:
A. 执行初始化语句
B. 执行判断条件语句,看其返回值时true还是false
a. 如果是true,就继续执行
b. 如果时false,就结束循环。
C. 执行循环体语句;
D. 执行循环后的操作表达式
E. 回到B继续。
(4) 例题:在控制台输出10次“helloworld”
程序:
class Test0_For {
public static void main(String[] args) {
for(int i =1; i <= 10; i++) {
System.out.println(“HelloWorld”);
}
}
}
- 循环结构for 语句的练习之获取数据
(1) 请在控制台上输出数据1-10
class Test1_For {
public static void main(String[] args) {
for(int i =1; i <= 10; i++) {
System.out.println(“i = ” + i);
}
}
}
(2) 请在控制台上输出数据1-10
class Test1_For {
public static void main(String[] args) {
for(int i =10; i >= 1; i--) {
System.out.println(“i = ” + i);
}
}
}
(3) 注意事项
A. 条件判断语句无论简单还是复杂,都是boolean类型。
B. 循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略,建议永远不要省略。
C. 一般来说,有左大括号就没有分号,有分号就没有左大括号。
3. 循环结构for 语句的练习之求和思想
(1) 求出1-10之间数据之和
class Test2_For {
public static void main(String[] args) {
int sum = 0;
for(int i =1; i <= 10; i++) {
sum = sum + i;
}
System.out.println(“sum = ” + sum);
}
}
(2) 求出1-100之间偶数之和
class Test2_For {
public static void main(String[] args) {
int sum = 0;
for(int i =1; i <= 10; i++) {
if (i % 2 = 0) {
sum = sum + i;
}
}
System.out.println(“sum = ” + sum);
}
}
(3) 求出1-10之间奇数之和
class Test2_For {
public static void main(String[] args) {
int sum = 0;
for(int i =1; i <= 10; i++) {
if (i % 2 != 0) {
sum = sum + i;
}
}
System.out.println(“sum = ” + sum);
}
}
- 循环结构for 语句的练习之水仙花
(1) 在控制台上输出所有的水仙花数。
水仙花数指一个三位数,其各个数字的立方和等于该数本身。
如:153就为水仙花数
153 = 111 + 555 + 333 = 153
class Test3_For {
public static void main(String[] args) {
for(int i =100; i <= 999; i++) { //获取到100-999
int ge = i % 10; //153 % 10
int shi = i / 10 % 10; //12 % 10
int bai = i / 10 / 10 % 10; //1 % 10
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
System.out.println(i);
}
}
}
}
- 循环结构for 语句的练习之统计思想
(1) 统计水仙花数有多少个
class Test4_For {
public static void main(String[] args) {
int sum = 0;
for(int i =100; i <= 999; i++) { //获取到100-999
int ge = i % 10; //153 % 10
int shi = i / 10 % 10; //12 % 10
int bai = i / 10 / 10 % 10; //1 % 10
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
sum = sum + 1;
}
} //for语句循环之后i 会被释放,不能再使用
System.out.println(sum);
}
}
- 循环结构while语句格式及基本使用
(1) while循环的格式
基本格式:
while(判断条件语句) {
循环体语句;
}
完整格式:
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
(2) 执行流程:
A. 执行初始化语句
B. 执行判断条件语句,看其返回值时true还是false
a. 如果是true,就继续执行
b. 如果时false,就结束循环。
C. 执行循环体语句;
D. 执行控制条件语句;
E. 回到B继续。
(3) 请在控制台输出1-10
class Test0_While {
public static void main(String[] args) {
int x = 1;
while(int x < = 10; ) {
System.out.println(“x = ” + x);
X++;
} //while循环结束后,x可以继续被使用
}
}
- 循环结构while语句的练习、
(1) 求1-100之和
class Test1_While {
public static void main(String[] args) {
int x = 1;
int sum = 0;
while(int x <=10; ) {
sum = sum + x;
x++;
}
System.out.println(“sum = ” + sum);
}
}
(2) 求水仙花数共多少个
class Test2_While {
public static void main(String[] args) {
int x = 100;
int sum = 0;
while(int x <=999; ) {
ge = x % 10;
shi = x / 10 % 10;
bai = x / 10 / 10 % 10;
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == x ) {
sum ++;
}
x++;
}
System.out.println(“sum = ” + sum);
}
}
- 循环结构do … while语句格式及基本使用
(1)do … while循环的格式
基本格式:
do {
循环体语句;
} while(判断条件语句);
完整格式:
初始化语句;
do {
循环体语句;
控制条件语句;
} while(判断条件语句)
(2) 执行流程:
A. 执行初始化语句
B. 执行循环体语句;
C. 执行控制条件语句;
D. 执行判断条件语句,看其返回值时true还是false
a. 如果是true,就继续执行
b. 如果时false,就结束循环。
E. 回到B继续。
(3) 请在控制台输出1-10
class Test0_DoWhile {
public static void main(String[] args) {
int x = 1;
do {
System.out.println(“x = ” + x);
x++;
} while(int x < = 10; )
}
}
-
循环结构三种循环语句的区别
(1) do…while 循环至少执行一次循环体。
(2) for,while循环必须先判断条件是否成立,然后决定是否执行循环。
(3) 如果想在循环结束后继续使用控制条件的那个变量,用while循环否则用for循环。不知道用谁就用for循环因为变量及早的从内存中消失,可以提高内存使用效率。 -
循环结构注意事项之死循环
(1) 一定要注意控制条件语句控制的那个控制变量问题,不要弄丢了,否则容易进入死循环。
(2) 两种最简单的死循环格式:
while (true){…}
for(; ; 😉 {…} -
循环结构嵌套输出四行五列的星星
(1) 输出四行五列的星星
class Test {
public static void main(String[] args) {
for( int x = 1;x <= 4;x++) {
for(int y = 1;y <= 5;y++) {
System.out.print(“*”);
}
System.out.println(); //换行
}
}
}
(2) 结论:外循环控制行数,内循环控制列数。
(3) System.out.println(“”)会自动换行
(4) System.out.print(“”)会接着后面输出,不会换行。
- 循环结构循环嵌套输出星星正三角形五行,每行有对应行数个星星
class Test0 {
public static void main(String[] args) {
for( int x = 1;x <= 5;x++) {
for(int y = 1;y <= x;y++) {
System.out.print( “*”);
}
System.out.println();//换行
}
}
}
- 循环结构九九乘法表
(1) 九九乘法表
class Test0 {
public static void main(String[] args) {
for( int x = 1;x <= 9;x++) {
for(int y = 1;y <= x;y++) {
System.out.print(y + “*” + x + “=” + (y * x) + ‘\t‘ );//加入了tab键
System.out.print(“ “);
}
System.out.println();//换行
}
}
}
(2) 代码优化
‘ \x ’ x表示任意,\是转义符号,这种做法叫转移字符。
‘ \t ’ tab键的位置
‘ \r ’ 回车
‘ \n ’ 换行
‘ \” ’ 转义双引号,想输出双引号可以用转义字符
‘ \’ ’ 转义单引号,想输出单引号可以用转义字符
15. 控制跳转语句break 语句
break语句只能在switch或者循环中使用。
16. 控制跳转语句continue语句
continue语句只能在循环中使用,含义是终止本次循环循环体就结束了,继续下次循环。
17. 控制跳转语句标号
(1) 标号:标记某个循环对其控制。
(2) 标号组成规则:其实就是合法的标识符。
18. 控制跳转语句的练习
目的:想输出2次;7次;13次” “Java基础班”.
class Test_Mark {
public static void main(String[] args) {
for(int x = 1; x <= 10; x++) {
if(x % 3 ==0) {
//break; //输出2次“Java基础班”.
//continue; //输出7次“Java基础班”.
//System.out.println(“Java基础班”); //输出13次“Java基础班”.
}
System.out.println(“Java基础班”);
}
}
}
- 控制跳转语句return语句
(1) 作用:返回;它的作用不是结束循环,而是结束方法。
(2) return,continue,break区别
return是结束方法。
continue是终止本次循环而继续下一次循环。
break是跳出循环。 - 方法概述和格式说明
(1) 方法的作用:是为了提高代码的复用性
(2) 方法是完成某个特定功能的模块。
(3) 方法的格式
修饰符 返回值类型 方法名 (参数类型 参数名1,参数类型 参数名2…) {
方法体语句;
return 返回值;
}
(4) 方法的格式说明
a. 修饰符:目前就是 public static后面有其他的。
b. 返回值类型:就是功能结果的数据类型。如void。
c. 方法名:符合命名规则即可,方便调用。如main,就是主方法的方法名。
d. 参数:
实际参数:就是实际参与运算的。
形式参数:就是方法定义上的,用于接收实际参数的。
e. 参数类型:就是参数的数据类型。如String[]。
f. 参数名:就是变量名。如args。
g. 方法体语句:就是完成功能的代码。
h. return:结束方法的。
i. 返回值:就是功能的结果,由return带给调用者。
20. 方法之求和案例及其调用
(1) 如何写一个方法
a. 首先明确一下返回值类型
b. 明确参数列表
(2) 例:求两个数据之和的案例
分析:两个整数的和还是整数;有两个未知内容参与运算。
class Test_Sum {
public static void main (String[] args) {
int add(10,20);
System.out.println(sum);
}
public static int add (int a,int b) {
int sum = a + b;
return sum;
}
}
21. 方法的注意事项
(1) 方法的调用
有返回值方法的单独调用一般没有意义,所以不推荐。
输出调用,但是不够好,因为我们可能需要对结果进行进一步的操作。
赋值调用,推荐方案。
(2) 案例
方法不调用不执行。
方法与方法是平级关系,不能嵌套定义。
方法定义的时候参数之间用逗号隔开。
方法在调用的时候不用再传递数据类型。
如果方法有明确的返回值,一定要用return带回一个值。
22. 方法的练习
(1) 需求:键盘录入两个数据,返回两个数中的较大值。
import java.util.Scanner;
class Test_Method {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“请输入第一个数据”);
int x = sc.nextInt();
System.out.println(“请输入第二个数据”);
int y = sc.nextInt();
int max = getMax(x,y);
System.out.println(max);
}
/* 返回两个整数的较大值
1. 明确返回值类型 int
2. 明确参数列表
*/
public static int getMax(int a,int b) {
Return a > b ? a : b;
}
}
(2) 需求:键盘录入两个数据,比较两个数是否相等。
import java.util.Scanner;
class Test_Method {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“请输入第一个数据”);
int x = sc.nextInt();
System.out.println(“请输入第二个数据”);
int y = sc.nextInt();
boolean b = isEquals(x,y);
System.out.println(b);
}
/* 返回两个整数的较大值
1. 明确返回值类型boolean
2. 明确参数列表int a,int b
*/
public static int isEquals(int a,int b) {
return a ==b;
}
}
- 方法之输出星形及其调用
(1) 需求:根据键盘录入的行数和列数,在控制台输出星形。
import java.util.Scanner;
class Test_Method {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“请输入行数”);
int x = sc.nextInt();
System.out.println(“请输入列数”);
int y = sc.nextInt();
print(x,y); //当返回值是void不允许输出调用,只能使用单独调用,。
}
public static void print(int a,int b) { //没有具体类型,用void
for(int i = 1;i <= a;i++) {
for(int j = 1;j <= b;j++) {
System.out.print(‘*’);
}
System.out.println();
}
return ; //如果返回值类型是void,return可以省略。
}
- 方法之打印九九乘法表
import java.util.Scanner;
class Test_Method {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“录入一个数,范围1-9之间”);
int num = sc.nextInt();
print99(num);
}
public static void print99(int a) {
for (int i = 1; i <= a ; i++) {
for(int j = 1; j <= i; j++) {
System.out.print(j + “*” + i + “=” + (j*i) + “\t”);
}
System.out.println();
}
}
}
- 方法重载
(1) 求和案例,2个整数和,3个整数和,4个整数和。
class Test_Overload;
public static void main(String[] args) {
int sum1 = add(10,20);
System.out.println(sum1);
int sum2 = add(10,20,30);
System.out.println(sum2);
}
public static int add(int a,int b) {
return a + b;
}
public static int add(int a,int b,int c) {
return a + b + c ;
}
}
(2) 重载:方法名相同,参数列表不同,与返回值类型无关
(3) 重载的分类:
A. 参数类型不同
B. 参数个数不同
27. 重载的练习
例:比较两个数是否相等,参数类型分别为两个int型,两个double型,
class Test_Overload ;
public static void main(String[] args) {
boolean b1 = isEquals(10,20);
System.out.println(b1);
boolean b2 = isEquals(10.5,20.5);
System.out.println(b2);
}
public static boolean isEquals (int a,int b) {
return (a == b);
}
public static boolean isEquals(double a,double b) {
return (a == b);
}
}