模块三重点回顾: 1.idea -> 自己看 2.算数运算符: + - * / %(取余) +: 字符串拼接 -> 内容直接往后拼接 自增自减:++ -- a.单独使用:符号在前在后都是先运算 b.混合使用:符号在前先运算,再使用运算后的值 符号在后先使用原值,再运算 3.赋值运算符: = += -= *= /= %= 4.比较运算符:结果都是boolean型的 == > < >= <= != 5.逻辑运算符:连接boolean结果的,结果还是boolean &&(短路效果) ||(短路效果) !(取反) ^ 6.三元运算符: a.格式: boolean表达式?表达式1:表达式2 b.执行流程:先走boolean表达式,如果是true,就走?后面的表达式1,否则就走:后面的表达式2 模块四重点: 1.会使用Scanner和Random 2.会使用Switch以及知道case的穿透性 3.会使用if 4.会使用for循环,while循环,嵌套循环
第一章.键盘录入_Scanner
1.概述:是java定义好的一个类 2.作用:将数据通过键盘录入的形式放到代码中参与运行 3.位置:java.util 4.使用: a.导包:通过导包找到要使用的类 -> 导包位置: 类上 import java.util.Scanner -> 导入的是哪个包下的哪个类 b.创建对象 Scanner 变量名 = new Scanner(System.in); c.调用方法,实现键盘录入 变量名.nextInt() 输入整数int型的 变量.next() 输入字符串 String型的
package com.atguigu.a_scanner; import java.util.Scanner; public class Demo01_Scanner { public static void main(String[] args) { //创建对象 Scanner sc = new Scanner(System.in); //录入int型整数 int data1 = sc.nextInt(); System.out.println("data1 = " + data1); //录入String型字符串 String data2 = sc.next(); System.out.println("data2 = " + data2); } } ======================================================= package com.atguigu.a_scanner; import java.util.Scanner; public class Demo02_Scanner { public static void main(String[] args) { //创建对象 Scanner sc = new Scanner(System.in); //录入int型整数 int old1 = sc.nextInt(); int old2 = sc.nextInt(); int old3 = sc.nextInt(); int temp = old1>old2?old1:old2; int max = temp>old3?temp:old3; System.out.println("max = " + max); } }
变量名.next():录入字符串 -> 遇到空格和回车就结束录入了 变量名.nextLine():录入字符串 -> 遇到回车就结束录入,遇到空格继续录入package com.atguigu.a_scanner; import java.util.Scanner; public class Demo03_Scanner { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String data1 = sc.next(); String data2 = sc.nextLine(); System.out.println("data1 = " + data1); System.out.println("data2 = " + data2); } } ------------------------------------ haha li data1 = haha data2 = liException in thread "main" java.util.InputMismatchException 输入类型不匹配异常 at java.util.Scanner.throwFor(Scanner.java:864) at java.util.Scanner.next(Scanner.java:1485) at java.util.Scanner.nextInt(Scanner.java:2117) at java.util.Scanner.nextInt(Scanner.java:2076) at com.atguigu.a_scanner.Demo04_Scanner.main(Demo04_Scanner.java:8) 原因:录入的数据类型和要求的数据类型不一致
第二章.Random随机数
学习Random和学习Scanner方式方法一样
1.概述:java自带的一个类 2.作用:可以指定的范围内随机一个整数 3.位置:java.util 4.使用: a.导包:import java.util.Random b.创建对象: Random 变量名 = new Random() c.调用方法,生成随机数: 变量名.nextInt() -> 在int的取值范围内随机一个整数
package com.atguigu.b_random; import java.util.Random; public class Demo01_Random { public static void main(String[] args) { //创建对象 Random rd = new Random(); int data1 = rd.nextInt(); System.out.println("data1 = " + data1); } }
在指定范围内随机一个数: nextInt(int bound) -> 在0-(bound-1) a.nextInt(10) -> 0-9 b.在1-10之间随机一个数: nextInt(10)+1 -> (0-9)+1 -> 1-10 c.在1-100之间随机一个数:nextInt(100)+1 -> (0-99)+1 -> 1-100 d.在100-999之间随机一个数:nextInt(900)+100 -> (0-899)+100 -> 100-999
package com.atguigu.b_random; import java.util.Random; public class Demo02_Random { public static void main(String[] args) { //创建对象 Random rd = new Random(); //在1-100之间随机 int data1 = rd.nextInt(100)+1; System.out.println("data1 = " + data1); System.out.println("============================="); //在100-999之间随机 int data2 = rd.nextInt(900)+100; System.out.println("data2 = " + data2); System.out.println("============================="); } }
第三章.switch(选择语句)
学switch if 循环必须要先掌握定义格式,然后掌握执行流程(带一个数进去,根据执行流程观察值的变化)
一.switch基本使用
1.格式: switch(变量){ case 常量值1: 执行语句1; break; case 常量值2: 执行语句2; break; …… default: 执行语句n; break; } 2.执行流程: 用变量接收的值和下面case后面的常量值匹配,匹配上哪个case就执行哪个case对应的执行语句 如果以上所有case都没有匹配上,就走default对应的执行语句n 3.break关键字: 代表的是结束switch语句 4.注意:switch能匹配什么类型的数据: byte short int char 枚举类型 String类型
package com.atguigu.c_switch; import java.util.Scanner; public class Demo01_Switch { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个整数"); int data = sc.nextInt(); switch (data){ case 1: System.out.println("鹅鹅鹅"); break; case 2: System.out.println("曲项向天歌"); break; case 3: System.out.println("白毛浮绿水"); break; case 4: System.out.println("红掌拨清波"); break; default: System.out.println("下面没有了"); break; } } }
二.case的穿透性
1.如果没有break,就会出现case的穿透性,程序就一直往下穿透执行,直到遇到了break或者switch代码执行完毕了,就停止了
package com.atguigu.c_switch; import java.util.Scanner; public class Demo02_Switch { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int data = sc.nextInt(); switch (data){ case 1: System.out.println("鹅鹅鹅"); case 2: System.out.println("曲项向天歌"); case 3: System.out.println("白毛浮绿水"); case 4: System.out.println("红掌拨清波"); break; default: System.out.println("下面没有了"); break; } } } -------------------------------- 2 曲项向天歌 白毛浮绿水 红掌拨清波
package com.atguigu.c_switch; import java.util.Scanner; public class Demo03_Switch { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int month = sc.nextInt(); switch (month){ case 12: System.out.println("冬季"); break; case 1: System.out.println("冬季"); break; case 2: System.out.println("冬季"); break; case 3: System.out.println("春季"); break; case 4: System.out.println("春季"); break; case 5: System.out.println("春季"); break; case 6: System.out.println("夏季"); break; case 7: System.out.println("夏季"); break; case 8: System.out.println("夏季"); break; case 9: System.out.println("秋季"); break; case 10: System.out.println("秋季"); break; case 11: System.out.println("秋季"); break; default: System.out.println("什么情况,你家有这个月份?"); } } }
package com.atguigu.c_switch; import java.util.Scanner; public class Demo03_Switch { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int month = sc.nextInt(); switch (month){ case 12: case 1: case 2: System.out.println("冬季"); break; case 3: case 4: case 5: System.out.println("春季"); break; case 6: case 7: case 8: System.out.println("夏季"); break; case 9: case 10: case 11: System.out.println("秋季"); break; default: System.out.println("什么情况,你家有这个月份?"); } } }
第四章.分支语句
一.if的第一种格式
1.格式: if(boolean表达式){ 执行语句; } if(boolean表达式) 执行语句; 2.执行流程: 先走if后面的boolean表达式,如果是true,就走if后面大括号中的执行语句,否则就不走 3.注意: if后面跟的是boolean表达式,只要是结果为boolean型的,都可以放在小括号中,哪怕直接写一个true或者false
package com.atguigu.d_if; import java.util.Scanner; public class Demo01_If { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int data1 = sc.nextInt(); int data2 = sc.nextInt(); if(data1==data2){ System.out.println("两个整数相等"); } } }
二.if的第二种格式
1.格式: if(boolean表达式){ 执行语句1; }else{ 执行语句2; } 2.执行流程: a.先走if后面的boolean表达式,如果是true就走if后面的执行语句1 b.否则就走else后面的执行语句2
package com.atguigu.d_if; import java.util.Scanner; public class Demo02_If { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int data1 = sc.nextInt(); int data2 = sc.nextInt(); if(data1==data2){ System.out.println("两个整数相等"); }else{ System.out.println("两个整数不相等"); } } }
1.练习
任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数
package com.atguigu.d_if; import java.util.Scanner; public class Demo03_If { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int data1 = sc.nextInt(); if(data1%2==1){ System.out.println(data1+"是奇数"); }else{ System.out.println(data1+"是偶数"); } } }
2.练习
需求:利用if else 求出两个数的较大值
package com.atguigu.d_if; import java.util.Scanner; public class Demo04_If { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int data1 = sc.nextInt(); int data2 = sc.nextInt(); if(data1>data2){ System.out.println(data1+"较大"); }else{ System.out.println(data2+"较大"); } } }
package com.atguigu.d_if; import java.util.Scanner; public class Demo05_If { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int data1 = sc.nextInt(); int data2 = sc.nextInt(); int data3 = sc.nextInt(); //定义临时变量,接收前两个数的较大值 int temp = 0; if(data1>data2){ temp = data1; }else{ temp = data2; } if(temp>data3){ System.out.println(temp+"较大"); }else{ System.out.println(data3+"较大"); } } }
3.练习
案例:从键盘输入年份,请输出该年的2月份的总天数,闰年2月29天,平年28天。 a.能被4整除,但是不能被100整除 b.或者能直接被400整除 步骤: 1.创建scanner对象,调用nextInt()键盘录入一个年份,year 2.判断(year%4==0 && year%100==0) || (year%400==0) 3.如果条件成立,就输出闰年2月29天,否则输出平年2月28天
package com.atguigu.d_if; import java.util.Scanner; public class Demo06_If { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int year = sc.nextInt(); if((year%4==0 && year%100==0) || (year%400==0)){ System.out.println(year+"是闰年,2月29天"); }else{ System.out.println(year+"是平年,2月28天"); } } }
4.练习
package com.atguigu.d_if; public class Demo07_If { public static void main(String[] args) { boolean num1 = false; boolean num2 = true; int i = 1; if ( num1 = num2 ) { //num2=true num1=num2 ----> true i++; System.out.println(i);//2 } if (false) { --i; System.out.println(i); } } }
三.if的第三种格式
1.格式: if(boolean表达式){ 执行语句1; }else if(boolean表达式){ 执行语句2; } else if(boolean表达式){ 执行语句3; }…… else(boolean表达式){ 执行语句n; } 2.执行流程: 从if开始往下挨个判断,哪个if判断结果为true,就走哪个if对应的执行语句,如果以上所有的判断都是false,就走else对应的执行语句n 3.使用场景:2种情况以上的判断
package com.atguigu.d_if; import java.util.Scanner; public class Demo08_ElesIf { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int data1 = sc.nextInt(); int data2 = sc.nextInt(); if ( data1 > data2 ) { System.out.println("data1大于data2"); }else if (data1<data2) { System.out.println("data1小于data2"); }else if (data1==data2){ System.out.println("data1等于data2"); } //else{ // System.out.println("data1等于data2"); //} } }
注意:最后一种情况,不一定非得用else,但是必须保证所有情况都判断了
1.练习
需求: 键盘录入一个星期数(1,2,...7),输出对应的星期一,星期二,……星期日 输入 1 输出 星期一 输入 2 输出 星期二 输入 3 输出 星期三 输入 4 输出 星期四 输入 5 输出 星期五 输入 6 输出 星期六 输入 7 输出 星期日 输入 其他数字 输出 数字有误
//package com.atguigu.d_if; //import java.util.Scanner; //public class Demo09_ElesIf { // public static void main(String[] args) { // Scanner sc = new Scanner(System.in); // int data = sc.nextInt(); // if ( data==1) { // System.out.println("星期一"); // }else if (data==2) { // System.out.println("星期二"); // }else if (data==3){ // System.out.println("星期三"); // }else if (data==4) { // System.out.println("星期四"); // }else if (data==5){ // System.out.println("星期五"); // }else if (data==6) { // System.out.println("星期六"); // }else if (data==7){ // System.out.println("星期日"); // }else{ // System.out.println("输入有误"); // } // } //} package com.atguigu.d_if; import java.util.Scanner; public class Demo09_ElesIf { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int data = sc.nextInt(); if ( data<1 || data>7) { System.out.println("输入有误"); }else { if (data==1){ System.out.println("星期一"); }else if (data==2) { System.out.println("星期二"); }else if (data==3){ System.out.println("星期三"); }else if (data==4) { System.out.println("星期四"); }else if (data==5){ System.out.println("星期五"); }else if (data==6) { System.out.println("星期六"); }else if (data==7){ System.out.println("星期日"); } } } }
2.练习
根据最新的年龄段划分标准: 0-6岁为婴幼儿 7-12岁为少年 13-17岁为青少年 18-45岁为青年 46-69岁为中年 69岁以上为老年 请键盘录入一个年龄,判断属于什么年龄段
package com.atguigu.d_if; import java.util.Scanner; public class Demo10_ElesIf { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int age = sc.nextInt(); if ( age<0 || age>200) { System.out.println("输入有误"); }else { if (age>=0 && age<=6){ System.out.println("婴幼儿"); }else if (age>=7 && age<=12) { System.out.println("少年"); }else if (age>=13 && age<=17){ System.out.println("青少年"); }else if (age>=18 && age<=45) { System.out.println("青年"); }else if (age>=46 && age<=69){ System.out.println("中年"); }else if (age>69) { System.out.println("老年"); } } } }
switch和if的区别:debug
1.switch: 会直接跳到相匹配的case
2.if: 从上到下挨个判断 -> 实际开发主要用if做判断,灵活
第五章.循环语句
什么时候使用循环语句 当我们发现一件事或者一段代码在反复执行,我们就可以考虑使用循环语句了
一.for循环
1.格式: for(初始化变量;比较;步进表达式){ 循环语句 -> 哪段代码循环执行,就将哪段代码放在此处 } 2.执行流程: a.先走初始化变量 b.比较,如果是true,走循环语句,走步进表达式(初始化的变量的值进行变化) c.再比较,如果还是true,继续走循环语句,走步进表达式 d.再比较,直到比较为false,循环结束了
package com.atguigu.e_for; public class Demo01_For { public static void main(String[] args) { for(int i=0; i<3; i++){ System.out.println("我爱java"); } } }
快捷键: 次数.fori
1.练习
for循环: 1-3之间的数据和,并把求和结果输出到控制台上 1+2+3 步骤: 1.定义一个变量,用来接收两个数的和 sum 2.利用for循环得1-3表述 3.在循环的过程中,两两相加,将结果赋值给sum 4.输出sum
package com.atguigu.e_for; import java.util.Scanner; public class Demo02_For { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int data = sc.nextInt(); int sum = 0; for (int i = 1; i <= data; i++) { sum += i; } System.out.println("sum = " + sum); } }
2.练习
需求: 求出1-100的偶数和 步骤: 1.定义一个变量sum,接收两个偶数的和 2.利用for循环将1-100表示出来 3.判断,如果是偶数,相加,将加的结果赋值给sum 4.输出sum:2550
package com.atguigu.e_for; import java.util.Scanner; public class Demo03_For { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int data = sc.nextInt(); int sum = 0; for (int i = 1; i <= data; i++) { if(i%2==0) { sum += i; } } System.out.println("sum = " + sum); } }
3.练习
统计一下1-100之间的偶数个数 步骤: 1.定义一个变量count,用来计数 2.利用for循环将1-100表示出来 3.判断,如果是偶数,计数count++ 4.输出count:50
package com.atguigu.e_for; import java.util.Scanner; public class Demo04_For { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int data = sc.nextInt(); int count = 0; for (int i = 1; i <= data; i++) { if (i % 2 == 0) { count++; } } System.out.println("count = " + count); } }
二.while循环
1.格式: 初始化变量: while(比较){ 循环语句; 步进表达式 } 2.执行流程: a.初始化变量 b.比较,如果是true,就走循环语句,走步进表达式 c.再比较,如果还是true,继续走循环语句,继续走步进表达式 d.再比较,直到比较为false,循环结束
package com.atguigu.f_while; public class Demo01_While { public static void main(String[] args) { int i = 0; while(i<5){ System.out.println("我爱java,我更爱钱"); i++; } } }
package com.atguigu.f_while; public class Demo02_While { public static void main(String[] args) { int i = 1; int sum = 0; while(i<=3){ sum += i; i++; } System.out.println("sum = " + sum); } }
package com.atguigu.f_while; public class Demo03_While { public static void main(String[] args) { int i = 1; int sum = 0; while(i<=100){ if(i%2==0) { sum += i; } i++; } System.out.println("sum = " + sum); } }
package com.atguigu.f_while; public class Demo04_While { public static void main(String[] args) { int i = 1; int count = 0; while(i<=100){ if(i%2==0) { count ++; } i++; } System.out.println("count = " + count); } }
1.练习
需求: 世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米,请问,我折叠多少次,可以折叠成珠穆朗玛峰的高度? 27 步骤: 1.定义一个变量表示山峰的高度 mountain 2.定义一个变量表示纸的厚度 paper 3.定义一个变量表示折纸的次数 count 4.利用while循环循环比较,如果paper<mountain 就循环对折 paper = paper*2; count++; 5.输出count
package com.atguigu.f_while; public class Demo05_While { public static void main(String[] args) { // 1.定义一个变量表示山峰的高度 mountain int mountain = 8844430; // 2.定义一个变量表示纸的厚度 paper double paper = 0.1; // 3.定义一个变量表示折纸的次数 count int count = 0; // 4.利用while循环循环比较,如果paper<mountain 就循环对折 // paper = paper*2; // count++; while(paper<mountain){ paper*=2; count++; } // 5.输出count System.out.println("count = " + count); } }
三.do…while循环(了解)
1.格式: 初始化变量; do{ 循环语句; 步进表达式 }while(比较); 2.执行流程: a.初始化变量 b.走循环语句 c.走步进表达式 d.判断,如果是true,继续循环,直到比较为false,循环结束 3.特点: 至少循环一次
package com.atguigu.g_dowhile; public class Demo01_Dowhile { public static void main(String[] args) { int i = 0; do{ System.out.println("我爱java"); i++; }while(i<5); } }
四.循环的区别
1.break: a.在switch中代表结果switch语句 b.在循环中代表结束循环 2.continue: 结束当前本次循环,直接进入下一次循环直到条件为false为止,