java流程控制(Scanner Random swich 分支语句 循环语句)
第一章.键盘录入Scanner
1.概述:是java定义好的一个类
2.作用:将数据通过键盘录入的方式放到代码中参与运行
3.位置:java.util
4.使用:
a.导包:通过导包的方式找到要使用的类 ->导包位置:类上
import java.util.Scanner ->导入的是哪个包下的哪个类
b.创建对象
Scanner 变量名= new Scanner (System.in);
c.调用方法,实现键盘录入
变量名.nextInt() 输入整数int型的
变量名.next() 输入字符串String型的
import java.util.Scanner;
public class Demo01Scanner {
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);
}
}
import java.util.Scanner;
public class Demo02Scanner {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请依次输入年龄:");
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);
}
}
变量名.next(): 录入字符串,遇到空格结束录入
变量名.nextLine(): 录入字符串,遇到回车结束录入
import java.util.Scanner;
public class Demo03Scanner {
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);
}
}
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:947)
at java.base/java.util.Scanner.next(Scanner.java:1602)
at java.base/java.util.Scanner.nextInt(Scanner.java:2267)
at java.base/java.util.Scanner.nextInt(Scanner.java:2221)
at com.atguigu.a_Scanner.Demo04Scanner.main(Demo04Scanner.java:9)
输入类型不匹配异常
原因:录入数据和要求数据类型不一致
第二章.Random随机数
学习Random和学习Scanner方式方法一样
1.概述:java自带的一个类
2.作用:可以在指定的范围内随机一个整数
3.位置:java.util
4.使用:
a.导包: import java.util.Random
b.创建对象: Random 变量名 = new Random();
c.调用方法,生成随机数:
变量名.nextInt() ->在int的取值范围内随机一个整数
import java.util.Random;
public class Demo01Random {
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) 内随机一个数
例:nextInt(10) ->0-9
import java.util.Random;
public class Demo02Random {
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);
}
}
第三章.Switch(选择语句)
switch if 循环必须要先掌握定义格式,然后掌握执行流程(带一个数进去,根据执行流程观察值的变化)
1.switch基本使用
1.格式:
switch(变量){
case 常量值1:
执行语句1;
break;
case 常量值2:
执行语句2:;
break;
case 常量值3:
执行语句3;
break;
case 常量值4:
执行语句4;
break;
......
default:
执行语句n;
break;
}
2.执行流程:
用变量接收的值和下面case后面的常量匹配,匹配上哪个case就执行哪个case对应的执行语句,如果以上所有case都没有匹配上就走default对应的执行语句n
3.break关键字:代表的是结束switch语句
4.注意:switch能匹配什么类型的数据:
byte short int char 枚举 String
import java.util.Scanner;
public class Demo01Switch {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
System.out.println("请您输入一个整数:");
int data1 = sc.nextInt();
switch (data1){
case 1:
System.out.println("鹅鹅鹅");
break;
case 2:
System.out.println("曲项向天歌");
break;
case 3:
System.out.println("白毛浮绿水");
break;
default:
System.out.println("红掌拨清波");
break;
}
}
}
2.case的穿透性
1.如果没有break,就会出现case穿透性,程序就一直往下穿透执行,直到遇到了break或者switch代码执行完毕了,就停止了
import java.util.Scanner;
public class Demo02Switch {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int data1 = sc.nextInt();
switch (data1){
case 1:
System.out.println("鹅鹅鹅");
case 2:
System.out.println("曲项向天歌");
case 3:
System.out.println("白毛浮绿水");
default:
System.out.println("红掌拨清波");
break;
}
}
}
1
鹅鹅鹅
曲项向天歌
白毛浮绿水
红掌拨清波
import java.util.Scanner;
public class Demo03Switch {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份:" );
int data = sc.nextInt();
switch (data){
case 1:
case 2:
case 3:
System.out.println("春季");
break;
case 4:
case 5:
case 6:
System.out.println("夏季");
break;
case 7:
case 8:
case 9:
System.out.println("秋季");
break;
default:
System.out.println("冬季");
break;
}
}
}
第四章.分支语句
1.if的第一种格式
1.格式:
if(boolean表达式){
执行语句;
}
2.执行流程:先走if后面的boolean表达式,如果是true就走if后面大括号中的执行语句,否则就不走
import java.util.Scanner;
public class Demo01If {
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("两整数相等");
}
}
}
2.if的第二种格式
1.格式:
if(boolean表达式){
执行语句1;
}else{
执行语句2;
}
2.执行流程:先走if后面的boolean表达式,如果是true就走if后面大括号中的执行语句1,否则就走else后边的执行语句2
import java.util.Scanner;
public class Demo01Ifelse {
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("两整数不相等");
}
}
}
2.1.练习
任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该数是奇数还是偶数
import java.util.Scanner;
public class Demo03ifelse {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int data = sc.nextInt();
if(data%2==0){
System.out.println(data+"为偶数");
}else {
System.out.println(data+"为奇数");
}
}
}
2.2.练习
需求,利用if else 求出两个数的较大值
import java.util.Scanner;
public class Demo04ifelse {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入两个整数:");
int data1 = sc.nextInt();
int data2 = sc.nextInt();
if(data1>=data2){
System.out.println(data1);
}else {
System.out.println(data2);
}
}
}
2.3.练习
从键盘录入一个年份,请输出该年的2月份的总天数,闰年2月份29天,平年28天
闰年:能被4整除,但是不能被100整除
或者直接被400整除
import java.util.Scanner;
public class Demo05ifelse {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int data1 = sc.nextInt();
if(data1%4==0&&data1%100!=0){
System.out.println(29);
}else if(data1%400==0) {
System.out.println(29);
}else {
System.out.println(28);
}
}
}
3.if的第三种格式
1.格式:if (boolean表达式){
执行语句1;
}else if(boolean表达式){
执行语句2;
}else{
执行语句3;
}
import java.util.Scanner;
public class Demo06ElseIf {
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 {
System.out.println("data1=data2");
}
}
}
注意:最后一种情况不一定必须用else,但是必须所有的情况都判断了、
练习:
import java.util.Scanner;
public class Demo07ElseIf {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个星期数:");
int data1 = sc.nextInt();
if(data1==1){
System.out.println("星期一");
}else if (data1==2){
System.out.println("星期二");
}else if (data1==3){
System.out.println("星期三");
}else if (data1==4){
System.out.println("星期四");
}else if (data1==5){
System.out.println("星期五");
}else if (data1==6) {
System.out.println("星期六");
}else if(data1==7) {
System.out.println("星期日");
}else {
System.out.println("输入有误!");
}
}
}
import java.util.Scanner;
public class Demo08ElseIf {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个年龄:");
int data1 = sc.nextInt();
if(data1>=0&&data1<=6){
System.out.println("婴幼儿");
}else if (data1>=7&&data1<=12){
System.out.println("少儿");
}else if (data1>=13&&data1<=17){
System.out.println("青少年");
}else if (data1>=18&&data1<=45){
System.out.println("青年");
}else if (data1>=46&&data1<=69){
System.out.println("中年");
}else {
System.out.println("老年");
}
}
}
switch和if的区别:
switch直接跳到相匹配的case
if从上到下挨个判断,实际开发主要用if做判断
第五章.循环语句
1.for循环
1.格式:
for(初始化变量;比较;步进表达式){
循环语句;
}
2.执行流程:先走初始化变量,如果是true走循环体,走步进表达式如果比较是true再次走循环语句,直到比较为false循环结束
public class Demo10For {
public static void main(String[] args) {
for (int i=1;i<4;i++){
System.out.println("十个勤天,做大做强!");
}
}
}
快捷键:次数.fori
1.1练习
求1-3之间的数据和,并把求和结果输出到控制台上
public class Demo11For {
public static void main(String[] args) {
int sum=1;
for(int i=2;i<4;i++){
sum = sum + i;
}
System.out.println("sum = " + sum);
}
}
1.2练习
求出1-100的偶数和
public class Demo12For {
public static void main(String[] args) {
int sum = 0;
for(int i=1;i<101;i++){
if (i%2==0){
sum+=i;
}
}
System.out.println("1-100的偶数和为:"+sum);
}
}
1.3练习
统计一下1-100之间的偶数个数
public class Demo12For {
public static void main(String[] args) {
int sum = 0;
for(int i=1;i<101;i++){
if (i%2==0){
sum+=1;
}
}
System.out.println("1-100的偶数个数为:"+sum);
}
}
2.while循环
1.格式:
初始化变量:
while(比较){
循环语句;
步进表达式;
}
2.执行流程:初始化变量,如果是true,则执行循环语句及步进表达式,再次比较如果仍为true继续执行循环语句及步进表达式,直至比较为false
public class Demo01While {
public static void main(String[] args) {
int i = 0;
while(i<5){
System.out.println("十个勤天 做大做强!");
i++;
}
}
}
public class Demo02While {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while (i<4){
sum+=i;
i++;
}
System.out.println("1-3的和为 : " + sum);
// System.out.println("sum = " + sum);
}
}
public class Demo03While {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while (i<101){
if (i%2==0){
sum+=i;}
i++;
}
System.out.println("1-100之间的偶数和为 : " + sum);
// System.out.println("sum = " + sum);
}
}
public class Demo04While {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while (i<101){
if (i%2==0){
sum+=1;}
i++;
}
System.out.println("1-100之间的偶数个数为 : " + sum);
// System.out.println("sum = " + sum);
}
}
2.1练习
珠穆朗玛峰8844.43米(8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米,请问折叠多少次可以折成珠穆朗玛峰的高度
public class Demo05While {
public static void main(String[] args) {
double f = 0.1;
int i = 0;
while (f<8844430){
i++;
f =f *2;
}
System.out.println("i = " + i);
}
}
3.do...whitch循环(了解)
1.格式:
初始化变量:
do{
循环表达式;
步进表达式;
}while(比较);
2.执行流程:初始化变量,循环表达式,步进表达式,比较如果是true则继续循环表达式,直到比较为false为止
3.特点:至少循环一次
public class Demo01DoWhile {
public static void main(String[] args) {
int i=0;
do {
System.out.println("十个勤天 做大做强!");
i++;
}while(i<7);
}
}
4.循环控制关键字
1.break:
a.在switch中代表结束Switch语句
b.在循环语句中代表结束循环
2.continue:
结束当前本次循环,直接进入下一次循环,直到条件为false为止
public class Demo01Break {
public static void main(String[] args) {
for (int i = 0; i <=5; i++) {
if (i==3){
//结束循环
break;
//结束本次循环
continue;
}
System.out.println("十个勤天 做大做强!"+i);
}
}
}
5.死循环
1.概述:一直循环
2.什么条件下一直循环:比较条件一直是true
public class Demo01EndlessAndNest {
public static void main(String[] args) {
int count = 0;
// for (int i = 0; i < 10; ) {
// count++;
// System.out.println("十个勤天 做大做强!"+count);
// }
while(true){
count++;
System.out.println("十个勤天 做大做强!"+count);
}
}
}
6.嵌套循环
1.概述:循环中还有循环
public class Demo02Nest {
public static void main(String[] args) {
for (int fen = 0; fen < 60; fen++) {
for (int miao = 0; miao < 60; miao++) {
System.out.println(fen+"分"+ miao+"秒");
}
}
}
}
练习:打印矩形
public class Demo03Nest {
public static void main(String[] args) {
//外层循环控制行
for (int i = 0; i < 5; i++) {
//内层循环控制列
for (int j = 0; j < 5; j++) {
System.out.print("+");
}
System.out.println();
}
}
}
练习:打印直角三角形
public class Demo03Nest {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
for(int j =0;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
7.练习猜数字小游戏
import java.util.Random;
import java.util.Scanner;
public class Demo01Exam {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Random rd = new Random();
int rdNumber = rd.nextInt(100) + 1;
int i=0;
while(i<5) {
System.out.println("请猜一个1-100之间的整数");
int scNumber = sc.nextInt();
if (scNumber < rdNumber) {
System.out.println("猜小了");
} else if (scNumber == rdNumber) {
System.out.println("猜中了");
break;
} else {
System.out.println("猜大了");
}
i++;
}
System.out.println(rdNumber);
}
}
完结!