1  do...while循环

格式

  1. 初始化语句;
  2. do {
  3. 循环体语句;
  4. 控制条件语句;
  5. }while(判断条件语句);
  6. 流程:
  7. 先执行初始化语句
  8. 再执行循环体语句
  9. 再执行条件控制语句
  10. 再做条件的判断:
  11. true, 继续执行循环体和条件控制
  12. false 循环结束
  13. 特点:
  14. 循环体语句至少执行一次

案例

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

  1. package com._51doit.javase.day04.loop;
  2.  
  3. public class DoWhile {
  4. public static void main(String[] args) {
  5. int i=1;
  6. int sum1 = 0;
  7. int sum2 = 0;
  8. do {
  9. //System.out.println("我是你爹");
  10. if(i%2==0) {
  11. sum1 += i;
  12. }else {
  13. sum2 += i;
  14. }
  15. i++;
  16. }while (i<=100);
  17. System.out.println("偶数个数为:"+sum1);
  18. System.out.println("奇数个数为:"+sum2);
  19. }
  20. }

1.1  循环综合案例

 贪吃蛇:

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

  1. package com._51doit.javase.day04.loop;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Snake {
  6. public static void main(String[] args) {
  7. System.out.println("欢迎来到贪吃蛇");
  8. System.out.println("请输入一个数字:");
  9. int score = 0;
  10. Scanner sc = new Scanner(System.in);
  11. int num = sc.nextInt();
  12. while(num == 1) {
  13. score += 10;
  14. num = sc.nextInt(); //对num重新赋值
  15. }
  16. System.out.println("您的得分是:"+score);
  17. }
  18. }

1.2 循环登录练习

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

分析:
需要用到Scanner
循环: 执行多少次: 不确定: while
循环的条件: 用户输入的密码不等于1234
循环体: 提示用户输入密码,用户输入密码

  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. System.out.println("请输入您的密码");
  8. Scanner sc = new Scanner(System.in);
  9. int password = sc.nextInt();
  10. while(password != 1234) {
  11. System.out.println("密码不正确,请重新输入密码");
  12. password = sc.nextInt();
  13. }
  14. System.out.println("登录成功");
  15. }
  16. }

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

  1. 1 package com._51doit.javase.day04.loop;
  2. 2
  3. 3 import java.util.Scanner;
  4. 4
  5. 5 public class LoginDemo {
  6. 6 public static void main(String[] args) {
  7. 7 Scanner sc = new Scanner(System.in);
  8. 8 do {
  9. 9 System.out.println("请输入您的密码:");
  10. 10 int password = sc.nextInt();
  11. 11 }while(password != 1234);
  12. 12 }
  13. 13 }

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

  1. 1 package com._51doit.javase.day04.loop;
  2. 2
  3. 3 import java.util.Scanner;
  4. 4
  5. 5 public class LoginDemo {
  6. 6 public static void main(String[] args) {
  7. 7 Scanner sc = new Scanner(System.in);
  8. 8 int password; //变量的声明,局部变量不赋初值不能使用
  9. 9 do {
  10. 10 System.out.println("请输入您的密码:");
  11. 11 password = sc.nextInt();
  12. 12 }while(password != 1234);
  13. 13 System.out.println("登录成功");
  14. 14 }
  15. 15 }

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

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

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

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

  1. 1 package com._51doit.javase.day04.loop;
  2. 2
  3. 3 import java.util.Scanner;
  4. 4
  5. 5 public class LoginDemo {
  6. 6 public static void main(String[] args) {
  7. 7 Scanner sc = new Scanner(System.in);
  8. 8 String password;
  9. 9 do {
  10. 10 System.out.println("请输入您的密码:");
  11. 11 password = sc.nextLine();
  12. 12 }while(!"1234".equals(password)); //这里将“1234”放前面
  13. 13 System.out.println("登录成功");
  14. 14 }
  15. 15 }

 1.4  do you love me

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

  1. package com._51doit.javase.day04.loop;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class DoYouLoveMe {
  6. public static void main(String[] args) {
  7. Scanner sc = new Scanner(System.in);
  8. String answer;
  9. do {
  10. System.out.println("老婆,你爱我吗");
  11. answer = sc.nextLine();
  12. }while(!"爱".equals(answer));
  13. System.out.println("哈哈");
  14. }
  15. }

1.5 循环嵌套
在循环中继续使用循环

案例:

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

  1. /**
  2. * 循环的嵌套:
  3. * 循环中还有循环 两层嵌套
  4. * 外层循环控制行
  5. * 内层循环控制列
  6. * 列不换行
  7. * 内层循环结束后,再换行
  8. */
  9. package com._51doit.javase.day04.loop;
  10.  
  11. public class CircleDemo {
  12. public static void main(String[] args) {
  13. for(int i=1; i<=4;i++) {
  14. for(int j=1;j<=5;j++) {
  15. System.out.print("*");
  16. }
  17. System.out.println();
  18. }
  19. }
  20. }

2.99乘法表的打印

  1. package com._51doit.javase.day04.loop;
  2.  
  3. public class MultiTable {
  4. public static void main(String[] args) {
  5. for(int i=1; i<=9; i++) {
  6. for(int j=1; j<=i; j++) {
  7. System.out.print(i+"X"+j+"="+i*j+"\t");
  8. }
  9. System.out.println();
  10. }
  11. }
  12. }

知识点:

tab: \t

换行: \n

回车:\r

1.6 跳转控制语句

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

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

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

2. 方法:

2.1 方法的定义:

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

格式:

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

      函数体;

      return 返回值;

}

方法格式的解释说明:

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

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

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

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

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

  函数体: 完成功能的代码

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

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

2.2 方法的调用

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

练习:

  1. package com._51doit.javase.day04.loop;
  2.  
  3. public class MethodTest {
  4. public static void main(String[] args) {
  5. printCha(12.5,34);
  6. printAreaAndZHOfCircle(12);
  7. printStar(8,10);
  8. }
  9. public static void printCha(double a,double b) {
  10. System.out.println(a-b);
  11. }
  12. public static void printAreaAndZHOfCircle(double r) {
  13. System.out.println("圆的周长为:"+2*3.14*r);
  14. System.out.println("圆的面积为:"+3.14*r*r);
  15. }
  16. public static void printStar(int x,int y) {
  17. for(int i=1;i<=x;i++) {
  18. for(int j=1;j<=y;j++) {
  19. System.out.print("*");
  20. }
  21. System.out.println();
  22. }
  23. }
  24. }

2.3 方法的返回值

无返回值的方法:

    返回值类型:void

有返回值的方法:

    返回值类型: 数据类型

    必须return

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

案例

  1. package com._51doit.javase.day04.loop;
  2.  
  3. public class MethodTest {
  4. public static void main(String[] args) {
  5. boolean re = isDouble(13);
  6. System.out.println(re);
  7. System.out.println(getCha(12.3,34));//只有有返回值的方法可以直接打印
  8. System.out.println(getMax(12.4f,12,34));
  9. }
  10. public static boolean isDouble(int a) {
  11. return a%2==0;
  12. }
  13. public static double getCha(double x,double y) {
  14. return x-y;
  15. }
  16. public static float getMax(float a,float b,float c) {
  17. if(a>b&a>c) {
  18. return a;
  19. }else if(b>c) {
  20. return b;
  21. }else {
  22. return c;
  23. }
  24. }
  25. }

2.4 方法的重载

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

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

案例

  1. 1 package com._51doit.javase.day04.loop;
  2. 2
  3. 3 public class ReloadMethod {
  4. 4 public static void main(String[] args) {
  5. 5 System.out.println(getSum(1,2));
  6. 6
  7. 7 }
  8. 8 public static long getSum(long a, long b) {
  9. 9 System.out.println("long......");
  10. 10 return a+b;
  11. 11 }
  12. 12 public static long getSum(int a, int b) {
  13. 13 System.out.println("int......");
  14. 14 return a+b;
  15. 15 }
  16. 16 }

打印结果为

int。。。。。。

3

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

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

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

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

        3

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

变化2:

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

  1. 1 public static long getSum(int a, long b) { //第8行
  2. 2
  3. 3
  4. 4 public static long getSum(long a, int b) { 12

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

零基础学习java------day5------do....while循环、嵌套、方法(函数)的更多相关文章

  1. 总结了零基础学习Java编程语言的几个基础知识要点

    很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.本文总结了零基础学习Java编程语言的几个基础知识要点. 1先了解什么是Java的四个方面   初学者先弄清这 ...

  2. 音乐出身的妹纸,零基础学习JAVA靠谱么

    问:表示音乐出身的妹纸一枚  某一天突然觉得身边认识的是一群程序员   突然想 要不要也去试试... 众好友都觉得我该去做个老师,可是我怕我会误人子弟,祸害祖国下一代..... 要不要 要不要 学Ja ...

  3. 零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构

    http://www.cnblogs.com/tanlon/p/3879081.html 在正式开始解码练习前先了解下关于FFmpeg中比较重要的函数以及数据结构. 1. 数据结构:  (1) AVF ...

  4. [原]零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构

    在正式开始解码练习前先了解下关于FFmpeg中比较重要的函数以及数据结构. 1. 数据结构:  (1) AVFormatContext  AVFormatContext是一个贯穿始终的数据结构,很多函 ...

  5. 零基础学习hadoop到上手工作线路指导(编程篇)

    问题导读: 1.hadoop编程需要哪些基础? 2.hadoop编程需要注意哪些问题? 3.如何创建mapreduce程序及其包含几部分? 4.如何远程连接eclipse,可能会遇到什么问题? 5.如 ...

  6. 零基础学Java第四节(字符串相关类)

    本篇文章是<零基础学Java>专栏的第四篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! String 本文章首发于公众号[编程攻略] 在Java中,我们经 ...

  7. 零基础学Java第三节(基本输入输出)

    本篇文章是<零基础学Java>专栏的第三篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] Java程序的命令行参数 我们可以 ...

  8. 【零基础学习iOS开发】【转载】

    原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...

  9. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇

    从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...

  10. 零基础学习hadoop到上手工作线路指导

    零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...

随机推荐

  1. JAVA笔记13__创建线程/线程休眠/等待线程终止/线程中断/守护线程

    /** * 线程:是进程的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程最少有一个进程(单线程程序) * 多线程两种实现方法:1.继承Thread类 2.实现Runnable ...

  2. Django settings.py设置 DEBUG=False后静态文件无法加载解决

    解决办法: settings.py 文件 DEBUG = False STATIC_ROOT = os.path.join(BASE_DIR,'static') #新增 urls.py文件(项目的) ...

  3. sudo user1账号获得管理员root的权限

    user1虽然有sudo权限,但不是真正的root权限,修改内核参数之类的就做不了 但是有sudo权限就可以添加账号,以下添加了admin账号与root账号一样的权限 useradd -u 0   - ...

  4. Java 在PPT中创建散点图

    本文将以Java代码示例展示如何在PPT幻灯片中创建散点图表. 创建图表前 需要在Java程序中导入用于操作PPT的jar包 Free Spire.Presentation for Java.可参考如 ...

  5. Vue.js教程 2.体验Vue

    Vue.js教程 2.体验Vue <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  6. Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create()

    在Java中处理JSON格式的数据时,Google  Gson 是个不错的选择,用起来挺方便的,也有一定灵活性.我现在工作中在参与的两个项目里都有用它.不过它在处理Date格式时有个小陷阱,在不同环境 ...

  7. [后端及服务器][WSL2(Ubuntu)+Docker]从零开始在WSL中安装Docker

    目录 简介 WSL 安装 开启虚拟化(BIOS) 检查系统版本 安装WSL 老版本安装详情 简介 想花三篇文章写下从Windows(WSL)上开启Docker部署php/node/vue/html等项 ...

  8. spring boot+vue实现H5聊天室客服功能

    spring boot+vue实现H5聊天室客服功能 h5效果图 vue效果图 功能实现 spring boot + webSocket 实现 官方地址 https://docs.spring.io/ ...

  9. halcon语法讲解

    前言 最近换工作,在学习了解halcon工具,每天总结分析今天所学知识,今天是基础语法篇! 1.基本语法 描述 语法 等号 := 不等号 # 注释符 * 字符串赋值 str:='halcon' 等于比 ...

  10. FastAPI 学习之路(六十一)使用mysql数据库替换sqlite数据库

    我们首先需要安装对应的连接的依赖 pip install pymysql 然后在配置testDatabase.py from sqlalchemy import create_engine from ...