java函数嵌套_零基础学习java------day5------do....while循环、嵌套、方法(函数)

1  do...while循环

格式

初始化语句;do{

循环体语句;

控制条件语句;

}while(判断条件语句);

流程:

先执行初始化语句

再执行循环体语句

再执行条件控制语句

再做条件的判断:true, 继续执行循环体和条件控制false循环结束

特点:

循环体语句至少执行一次

案例

1. 使用do...while  求1-100内的奇数和以及偶数和

packagecom._51doit.javase.day04.loop;public classDoWhile {public static voidmain(String[] args) {int i=1;int sum1 = 0;int sum2 = 0;do{//System.out.println("我是你爹");

if(i%2==0) {

sum1+=i;

}else{

sum2+=i;

}

i++;

}while (i<=100);

System.out.println("偶数个数为:"+sum1);

System.out.println("奇数个数为:"+sum2);

}

}

1.1  循环综合案例

贪吃蛇:

需求: 在键盘上输入一个数,如果是1,代表蛇吃食物,得分加10,并继续输入,如果输入的是一个非1的数字,停止程序,输出得分

packagecom._51doit.javase.day04.loop;importjava.util.Scanner;public classSnake {public static voidmain(String[] args) {

System.out.println("欢迎来到贪吃蛇");

System.out.println("请输入一个数字:");int score = 0;

Scanner sc= newScanner(System.in);int num =sc.nextInt();while(num == 1) {

score+= 10;

num= sc.nextInt(); //对num重新赋值

}

System.out.println("您的得分是:"+score);

}

}

1.2 循环登录练习

需求:1 控制台提示用户输入密码;2用户输入密码;3如果用户输入的密码不等于1234,回到步骤1;4如果用户输入的密码等于1234,提示登录成功

分析:

需要用到Scanner

循环: 执行多少次: 不确定: while

循环的条件: 用户输入的密码不等于1234

循环体: 提示用户输入密码,用户输入密码

packagecom._51doit.javase.day04.loop;importjava.util.Scanner;public classLoginDemo {public static voidmain(String[] args) {

System.out.println("请输入您的密码");

Scanner sc= newScanner(System.in);int password =sc.nextInt();while(password != 1234) {

System.out.println("密码不正确,请重新输入密码");

password=sc.nextInt();

}

System.out.println("登录成功");

}

}

将此案例用do...while形式来做

1 packagecom._51doit.javase.day04.loop;2

3 importjava.util.Scanner;4

5 public classLoginDemo {6 public static voidmain(String[] args) {7 Scanner sc = newScanner(System.in);8 do{9 System.out.println("请输入您的密码:");10 int password =sc.nextInt();11 }while(password != 1234);12 }13 }

注意,上面代码第十一行会出问题,第10行中的password作用域为do{}中,所以第11行的while就相当于没定义,无法使用,解决方法是将变量进行声明,代码如下

1 packagecom._51doit.javase.day04.loop;2

3 importjava.util.Scanner;4

5 public classLoginDemo {6 public static voidmain(String[] args) {7 Scanner sc = newScanner(System.in);8 intpassword; //变量的声明,局部变量不赋初值不能使用9 do{10 System.out.println("请输入您的密码:");11 password =sc.nextInt();12 }while(password != 1234);13 System.out.println("登录成功");14 }15 }

1.3 上诉代码将密码改写成字符串

字符串在比较内容的时候是不能使用  “==”,“!=”的

字符串在比较内容的时候,用的是equals

用法: 字符串a.equals(字符串b);如果内容相同则返回true,否则返回false,当在前面加个"!"表示不相等

1 packagecom._51doit.javase.day04.loop;2

3 importjava.util.Scanner;4

5 public classLoginDemo {6 public static voidmain(String[] args) {7 Scanner sc = newScanner(System.in);8 String password;9 do{10 System.out.println("请输入您的密码:");11 password =sc.nextLine();12 }while(!"1234".equals(password)); //这里将“1234”放前面13 System.out.println("登录成功");14 }15 }

1.4  do you love me

需求:

问老婆一个问题: 你爱我么?如果回答的不是爱,继续问, 如果回答的是爱, 循环结束

packagecom._51doit.javase.day04.loop;importjava.util.Scanner;public classDoYouLoveMe {public static voidmain(String[] args) {

Scanner sc= newScanner(System.in);

String answer;do{

System.out.println("老婆,你爱我吗");

answer=sc.nextLine();

}while(!"爱".equals(answer));

System.out.println("哈哈");

}

}

1.5 循环嵌套

在循环中继续使用循环

案例:

1.请输出一个4行5列的星星(*)图案

/*** 循环的嵌套:

* 循环中还有循环 两层嵌套

* 外层循环控制行

* 内层循环控制列

* 列不换行

* 内层循环结束后,再换行*/

packagecom._51doit.javase.day04.loop;public classCircleDemo {public static voidmain(String[] args) {for(int i=1; i<=4;i++) {for(int j=1;j<=5;j++) {

System.out.print("*");

}

System.out.println();

}

}

}

2.99乘法表的打印

packagecom._51doit.javase.day04.loop;public classMultiTable {public static voidmain(String[] args) {for(int i=1; i<=9; i++) {for(int j=1; j<=i; j++) {

System.out.print(i+"X"+j+"="+i*j+"\t");

}

System.out.println();

}

}

}

知识点:

tab: \t

换行: \n

回车:\r

1.6 跳转控制语句

break: 结束单层循环(其所在的那层循环结束),在循环语句和switch语句中使用

continue:结束本次循环,在循环语句中使用

return:结束整个方法,返回结果给其调用者

2. 方法:

2.1 方法的定义:

目的:解决代码重复编写问题:

格式:

修饰符  返回值类型  方法名(参数类型参数名1,参数类型参数名2…) {

函数体;

return 返回值;

}

方法格式的解释说明:

修饰符:比较多,后面会详细介绍。目前就用public static

返回值类型: 用于限制返回值的数据类型

方法名: 一个名称,为了方便我们调用参数

参数类型:限定调用方法时传入参数的数据类型

参数名:是一个变量,接收调用方法时传入的参数

函数体: 完成功能的代码

return:结束方法以及返回方法指定类型的值

返回值: 程序被return带回来的结果,返回给调用者。

2.2 方法的调用

方法名(符合参数类型和个数的具体值)

练习:

packagecom._51doit.javase.day04.loop;public classMethodTest {public static voidmain(String[] args) {

printCha(12.5,34);

printAreaAndZHOfCircle(12);

printStar(8,10);

}public static void printCha(double a,doubleb) {

System.out.println(a-b);

}public static void printAreaAndZHOfCircle(doubler) {

System.out.println("圆的周长为:"+2*3.14*r);

System.out.println("圆的面积为:"+3.14*r*r);

}public static void printStar(int x,inty) {for(int i=1;i<=x;i++) {for(int j=1;j<=y;j++) {

System.out.print("*");

}

System.out.println();

}

}

}

2.3 方法的返回值

无返回值的方法:

返回值类型:void

有返回值的方法:

返回值类型: 数据类型

必须return

return   后面的值要和返回值类型相一致

案例

packagecom._51doit.javase.day04.loop;public classMethodTest {public static voidmain(String[] args) {boolean re = isDouble(13);

System.out.println(re);

System.out.println(getCha(12.3,34));//只有有返回值的方法可以直接打印

System.out.println(getMax(12.4f,12,34));

}public static boolean isDouble(inta) {return a%2==0;

}public static double getCha(double x,doubley) {return x-y;

}public static float getMax(float a,float b,floatc) {if(a>b&a>c) {returna;

}else if(b>c) {returnb;

}else{returnc;

}

}

}

2.4 方法的重载

概念:一个类中可以存在多个名字相同的方法,但是必须保证参数的个数或类型不同,其与返回值无关

TODO:在代码里充当书签,便于定位

案例

1 packagecom._51doit.javase.day04.loop;2

3 public classReloadMethod {4 public static voidmain(String[] args) {5 System.out.println(getSum(1,2));6

7 }8 public static long getSum(long a, longb) {9 System.out.println("long......");10 return a+b;11 }12 public static long getSum(int a, intb) {13 System.out.println("int......");14 return a+b;15 }16 }

打印结果为

int。。。。。。

3

可见一个函数存在相同的方法时,其会根据参数的类型去匹配应该调用哪一个函数

变化1:若将12行代码中的两个int改为short,运行结果会是什么呢?

public static long getSum(short a, short b){

得到的结果    long......

3

这说明函数调用时,若发现参数类型不完全匹配时,就会找一个能接受给定参数的函数调用,如本例中给定的参数时int类型,但两个getSum()方法中参数都不为int,但long可以接受int类型参数,short不可以接收int类型参数,所以调用参数类型为long的getSum()方法。

变化2:

若将第8行和11行代码分别改写成如下形式,运行结果会怎样

1 public static long getSum(int a, longb) { //第8行2

3

4 public static long getSum(long a, int b) { 第12行

这样会报错,main()方法将不知道要调用哪一个getSum方法,报错信息如下:

ae508a5c004ad0e0eef1ef0f2fe55d08.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值