零基础学习java------day5------do....while循环、嵌套、方法(函数)
1 do...while循环
格式
初始化语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
流程:
先执行初始化语句
再执行循环体语句
再执行条件控制语句
再做条件的判断:
true, 继续执行循环体和条件控制
false 循环结束
特点:
循环体语句至少执行一次
案例
1. 使用do...while 求1-100内的奇数和以及偶数和
package com._51doit.javase.day04.loop; public class DoWhile {
public static void main(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的数字,停止程序,输出得分
package com._51doit.javase.day04.loop; import java.util.Scanner; public class Snake {
public static void main(String[] args) {
System.out.println("欢迎来到贪吃蛇");
System.out.println("请输入一个数字:");
int score = 0;
Scanner sc = new Scanner(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
循环体: 提示用户输入密码,用户输入密码
package com._51doit.javase.day04.loop; import java.util.Scanner; public class LoginDemo {
public static void main(String[] args) {
System.out.println("请输入您的密码");
Scanner sc = new Scanner(System.in);
int password = sc.nextInt();
while(password != 1234) {
System.out.println("密码不正确,请重新输入密码");
password = sc.nextInt();
}
System.out.println("登录成功");
}
}
将此案例用do...while形式来做
1 package com._51doit.javase.day04.loop;
2
3 import java.util.Scanner;
4
5 public class LoginDemo {
6 public static void main(String[] args) {
7 Scanner sc = new Scanner(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 package com._51doit.javase.day04.loop;
2
3 import java.util.Scanner;
4
5 public class LoginDemo {
6 public static void main(String[] args) {
7 Scanner sc = new Scanner(System.in);
8 int password; //变量的声明,局部变量不赋初值不能使用
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 package com._51doit.javase.day04.loop;
2
3 import java.util.Scanner;
4
5 public class LoginDemo {
6 public static void main(String[] args) {
7 Scanner sc = new Scanner(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
需求:
问老婆一个问题: 你爱我么?如果回答的不是爱,继续问, 如果回答的是爱, 循环结束
package com._51doit.javase.day04.loop; import java.util.Scanner; public class DoYouLoveMe {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String answer;
do {
System.out.println("老婆,你爱我吗");
answer = sc.nextLine();
}while(!"爱".equals(answer));
System.out.println("哈哈");
}
}
1.5 循环嵌套
在循环中继续使用循环
案例:
1.请输出一个4行5列的星星(*)图案
/**
* 循环的嵌套:
* 循环中还有循环 两层嵌套
* 外层循环控制行
* 内层循环控制列
* 列不换行
* 内层循环结束后,再换行
*/
package com._51doit.javase.day04.loop; public class CircleDemo {
public static void main(String[] args) {
for(int i=1; i<=4;i++) {
for(int j=1;j<=5;j++) {
System.out.print("*");
}
System.out.println();
}
}
}
2.99乘法表的打印
package com._51doit.javase.day04.loop; public class MultiTable {
public static void main(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 方法的调用
方法名(符合参数类型和个数的具体值)
练习:
package com._51doit.javase.day04.loop; public class MethodTest {
public static void main(String[] args) {
printCha(12.5,34);
printAreaAndZHOfCircle(12);
printStar(8,10);
}
public static void printCha(double a,double b) {
System.out.println(a-b);
}
public static void printAreaAndZHOfCircle(double r) {
System.out.println("圆的周长为:"+2*3.14*r);
System.out.println("圆的面积为:"+3.14*r*r);
}
public static void printStar(int x,int y) {
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 后面的值要和返回值类型相一致
案例
package com._51doit.javase.day04.loop; public class MethodTest {
public static void main(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(int a) {
return a%2==0;
}
public static double getCha(double x,double y) {
return x-y;
}
public static float getMax(float a,float b,float c) {
if(a>b&a>c) {
return a;
}else if(b>c) {
return b;
}else {
return c;
}
}
}
2.4 方法的重载
概念:一个类中可以存在多个名字相同的方法,但是必须保证参数的个数或类型不同,其与返回值无关
TODO:在代码里充当书签,便于定位
案例
1 package com._51doit.javase.day04.loop;
2
3 public class ReloadMethod {
4 public static void main(String[] args) {
5 System.out.println(getSum(1,2));
6
7 }
8 public static long getSum(long a, long b) {
9 System.out.println("long......");
10 return a+b;
11 }
12 public static long getSum(int a, int b) {
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, long b) { //第8行
2
3
4 public static long getSum(long a, int b) { 第12行
这样会报错,main()方法将不知道要调用哪一个getSum方法,报错信息如下:
零基础学习java------day5------do....while循环、嵌套、方法(函数)的更多相关文章
- 总结了零基础学习Java编程语言的几个基础知识要点
很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.本文总结了零基础学习Java编程语言的几个基础知识要点. 1先了解什么是Java的四个方面 初学者先弄清这 ...
- 音乐出身的妹纸,零基础学习JAVA靠谱么
问:表示音乐出身的妹纸一枚 某一天突然觉得身边认识的是一群程序员 突然想 要不要也去试试... 众好友都觉得我该去做个老师,可是我怕我会误人子弟,祸害祖国下一代..... 要不要 要不要 学Ja ...
- 零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构
http://www.cnblogs.com/tanlon/p/3879081.html 在正式开始解码练习前先了解下关于FFmpeg中比较重要的函数以及数据结构. 1. 数据结构: (1) AVF ...
- [原]零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构
在正式开始解码练习前先了解下关于FFmpeg中比较重要的函数以及数据结构. 1. 数据结构: (1) AVFormatContext AVFormatContext是一个贯穿始终的数据结构,很多函 ...
- 零基础学习hadoop到上手工作线路指导(编程篇)
问题导读: 1.hadoop编程需要哪些基础? 2.hadoop编程需要注意哪些问题? 3.如何创建mapreduce程序及其包含几部分? 4.如何远程连接eclipse,可能会遇到什么问题? 5.如 ...
- 零基础学Java第四节(字符串相关类)
本篇文章是<零基础学Java>专栏的第四篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! String 本文章首发于公众号[编程攻略] 在Java中,我们经 ...
- 零基础学Java第三节(基本输入输出)
本篇文章是<零基础学Java>专栏的第三篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] Java程序的命令行参数 我们可以 ...
- 【零基础学习iOS开发】【转载】
原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...
- 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇
从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...
- 零基础学习hadoop到上手工作线路指导
零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...
随机推荐
- mysql登录后重置root密码的步骤
mysql重置root密码. 方法一: 编辑配置文件 /etc/my.cnf ,在[mysqld]后面任意一行添加"skip-grant-tables"用来跳过密码验证 接下来我们 ...
- [源码解析] PyTorch 如何使用GPU
[源码解析] PyTorch 如何使用GPU 目录 [源码解析] PyTorch 如何使用GPU 0x00 摘要 0x01 问题 0x02 移动模型到GPU 2.1 cuda 操作 2.2 Modul ...
- 【java+selenium3】时间控件 (九)
1.问题描述: 在应用selenium实现web自动化时,经常会遇到处理日期控件点击问题,手工很简单,可以一个个点击日期控件选择需要的日期,但自动化执行过程中,完全复制手工这样的操作就有点难了. 如图 ...
- Fiddler抓包工具简介:(四)Fiddler的基本使用
Fiddler的使用 视图功能区域 会话的概念:一次请求和一次响应就是一个会话. fiddler主界面 下面挑几个快捷功能区中常用几项解释,其他功能自己尝试: 快捷功能区 1:给会话添加备注信息 2: ...
- JMeter学习笔记--关联
1.什么是关联? 本次请求需要的数据,需要上一步的请求返回给提供的过程. 2.JMeter关联中常用的两种方式 正则表达式提取器 正则表达式提取器用于对页面任何文本的提取,提取的内容是根据正则表达式在 ...
- 组件通信之全局事件总线 & 消息订阅发布
全局事件总线 介绍 一种组件间通信的方式,适用于任意组件间通信. 在使用全局事件总线之前需要一些知识准备 所有组件实例的原型对象的原型对象就是 Vue 的原型对象,即VueComponent.prot ...
- git远程仓库、提交代码操作
初始化仓库 1.初始化 git init #或 git clone 远程仓库地址 git init 后续要添加远程仓库,git clone不需要再添加 2.连接仓库 git remote add 远程 ...
- 利用opencv进行简易的拍照并处理照片
今天用python写了一个调用摄像头拍照并对图片进行素描化或动漫化的小demo. 首先我的环境是:PyCharm+python3.8+opencv-python(4.4.0.42) 我们分析一下思路, ...
- Maven 依赖调解源码解析(二):如何调试 Maven 源码和插件源码
本文是系列文章<Maven 源码解析:依赖调解是如何实现的?>第二篇,主要介绍如何调试 Maven 源码和插件源码.系列文章总目录参见:https://www.cnblogs.com/xi ...
- SpringCloud升级之路2020.0.x版-39. 改造 resilience4j 粘合 WebClient
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 要想实现我们上一节中提到的: 需要在重试以及断路中加一些日志,便于日后的优化 需要定义重试 ...