JAVA SE — 循环与分支和输入输出
1.语句的读取
每一个程序在运行过程,如果遇到的是顺序结构,语句是从上到下读取;遇到分支结构是通过分支语句的表达式选择读取语句;遇到循环结构,会重复读取语句,直到不满足循环表达式,跳出循环,终止循环内的语句的读取。
2. if else分支
语法上的定义
语句读取到 if else分支时,会先判断 if 语句的表达式,满足条件就进入if 分支内的语句进行读取,读取后不会再进入后面的分支;如果 if 分支的表达式不满足,会判断下一分支else if 的表达式,如果表达式为真,进入分支内的语句进行读取,读取后不会再进入后面的分支;如果else if 分支表达式结果为假,进入最后else 分支,不需要表达式进行判断,读取号分支内的语句后,结束分支。
if else 分支的使用
判断一个数是否为奇数,如果是,输出奇数,如果不是,输出偶数;
public class Test {public static void main(String[] args) {int a = 2;//判断是否为奇数或者偶数if(a % 2 == 1)System.out.println("奇数");elseSystem.out.println("偶数");}
}
程序输出
输入一个数,如果是大于0,输出 >, 如果等于0,输出 ==,如果小于0,输出 <;
public static void main(String[] args) {int num = 0;if (num > 0) {System.out.println(">");} else if (num < 0) {System.out.println("<");} else {System.out.println("==");}}
输出结果
3. switch case分支的使用
使用每一个分支case分支对应周一到周末,1对应星期一,2对应星期二,以此类推到7对应星期天
//switch case分支的使用public static void main(String[] args) {int day = 7;//先对表达式进行判断switch(day){//day此时为7对应 case 7的分支case 1:System.out.println("星期一");break;//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;default:System.out.println("输出错误");}
输出结果
4.while循环的使用
输出1 - 10 的数字
//while循环:输出 1 - 10public static void main(String[] args) {int i = 1;while(i <= 10){System.out.print(i + " ");//i + " " 输出的是字符串//等价于将i 加到空格字符前//输出 1和空格i++;}}
求两个数的最大公约数
//while:求两个数的最大公约数public static void main(String[] args) {int a = 16;int b = 24;//使用辗转相除法不断的求余数,赋值int c = a % b;//16 % 24 = 16while(c != 0){//c = 16满足 第二次 c = 8满足 c = 0不满足 a = b;//a = b = 24 a = 16b = c;//b = 16; b =8c = a % b;//c = 24 % 16 = 8 c = 16 % 8 =0}System.out.println("a 和 b 的最大公约数是:" + b);}
以下程序输出的结果是什么?
//while:break 和 continuepublic static void main(String[] args) {int i = 1;while(i < 10){while(i !=5){i++;}if(i == 6)break;System.out.println(i + " ");i++;}}
i 是从1开始进入循环的,满足第一次while循环的表达式,进入while循环的内部语句,遇到第二次while循环,满足表达式,进入第二次while循环的内部,i++,一直循环到不满足第二层while循环的表达式,即 i 不等于5,跳出第二次while循环时,i 等于5,判断if语句的表达式,不满足,到输出语句,输出5和空格,i++变为6,重新进入第一层while循环,满足 i < 10,进入第二层while消耗会,满足判断条件,i一直++,满足i != 5,导致死循环。
此时程序一直死循环,结果是一直输出5。
5.for循环的使用
输出 1 - 10 的数字
在键盘上输入mian后回车,在idea中可以快速生成mian方法语句
输入fori,后回车快速生成for循环语句
完善for循环的表达式,输入sout后回车,快速生成printfln语句
//for循环:输出 1 -10public static void main(String[] args) {for (int i = 1; i <= 10 ; i++) {System.out.println(i + " ");}}
以下程序输出的结果是什么?
//以下程序输出的结果是什么?public static void main(String[] args) {for (int i = 0; i < 10; i++) {if(i == 5)continue;System.out.print(i + " ");}}
i 从0开始,满足判断i < 10,进入语句中,不满足if语句的判断,continue不执行,输出1和空格,然后进入for循环的调整,i++,满足 i < 10,重复以上流程,直到 i == 5 时,执行continue,此轮循环continue后面的语句不再执行,不输出 5 和空格,i++变为6,重复流程输出,直到i不满足 i < 10跳出循环。
6.do while循环的使用
以下程序的输出结果是什么?
//do while:以下程序的输出结果是什么public static void main(String[] args) {int i = 0;int j = 0;while (j < 2) {do {i++;if (i == 6)break;//跳出循环System.out.print(i + " ");} while (i < 10);j++;}}
do while循环与while循环的区别在于do while循环第一次进入循环内部不需要判断,而while循环需要先进行表达式的判断;while循环满足j < 2,进入内部语句,do while循环第一次进入不需要表达式判断,直接进入循环内部,执行 i++, i 变成2,不满足if语句,输出 1 和空格,最后判断while的表达式,满足 i < 10,重复执行do while循环进入内部,一直到满足if语句的表达式,跳出do while循环,此时 i 等于6,j++变为1,满足while循环,进入循环内部,执行do while循环,i++变为7,不满足if语句,执行输出语句,一直重复到 i < 10,跳出do while循环,j++变为2,不满 j < 2,跳出循环。
7. 输出语句
//输出语句:printpublic static void main(String[] args) {int i = 10;System.out.print(i);//将数据打印,变量名作为参数System.out.println();//换行System.out.println(i);//将数据打印后换行,变量名作为参数System.out.printf("%d",i);//按照指定格式打印,与C语言使用方式一样}
在JAVA中比较少使用printf语句将数据按照指定格式输出,通常使用println输出语句。
8.输入语句
JAVA程序中使用输入语句需要导包:import java.util.Scanner;,输入Scanner后回车,就会自动生成,类似于C语言中的头文件。
需要先输入: Scanner scanner = new Scanner(System.in);
创建变量接收返回值: int n = scanner.nextInt();
//Scanner的使用public static void main(String[] args) {Scanner scanner = new Scanner(System.in);//Scanner是一种类 scanner是变量名// new相当于新开辟一块空间//system.in表示是系统输入//创建变量int n = scanner.nextInt();//scanner.nextInt()表示输入的是一个整型值//创建整型变量n接收返回值//输出nSystem.out.println(n);}
输入 1 ,输出 1
此时只能输出1次,如果想多次输入,可以使用while循环,表达式为:scanner.hasNext()
//Scanner:多次输出public static void main(String[] args) {//创建变脸scannerScanner scanner = new Scanner(System.in);//scanner.hasNext()表示有多次输出while (scanner.hasNext()) {//创建变量n接收键盘输入的值int n = scanner.nextInt();//输出nSystem.out.println(n);}}
表达式的值还可以是ture,while循环一直执行
//Scanner:多次输出public static void main(String[] args) {//创建变脸scannerScanner scanner = new Scanner(System.in);while (true) {//创建变量n接收键盘输入的值int n = scanner.nextInt();//输出nSystem.out.println(n);}}
9.使用输入输出和循环与分支实现一个猜数字小游戏
生成随机数,使用Random这一个类,需要导包:import java.util.Random;,输入Random后回车,会自动生成导包需要的文件。
创建random变量
创建变量n接收生成的随机数
使用while循环完成多次输入,如果输入的数大于随机数,输出猜大了,如果输入的数小于随机数,输出猜小了,其它输出猜对了,并打印出随机数,跳出while循环,回收scanner指向的空间。
//猜数字小游戏public static void main(String[] args) {Random random = new Random();//Ramdom 是一种类//new Random()是开辟新的空间//将新开辟的空间给random使用int n = random.nextInt(100);//random.nextInt表示生成的是整型值//()括号内表示生成的范围:0 - 100//开辟新的空间赋给变量scannerScanner scanner = new Scanner(System.in);while(true){System.out.print("请输入猜测的数字:");//guest接收输入的值int guest = scanner.nextInt();//猜测判断if(guest > n){System.out.println("猜大了");} else if (guest < n) {System.out.println("猜小了");} else {System.out.println("猜对了");System.out.println("随机数是:" + n);break;}}scanner.close();//回收scanner指向的空间}