Java笔记_3
一、判断与循环
1.1、顺序结构
顺序结构语句是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行
1.2、分支结构
1.2.1、if语句
格式一:
if (/*判断条件*/){
//执行代码
};
if
的注意点:- 大括号的开头可以另起一行书写,但是建议写在第一行的末尾
- 在语句体中,如果只有一句代码,大括号可以省略不写
- 如果对一个布尔类型的变量进行判断,不要用
==
号
格式二:
if (/*判断条件*/){
//执行代码
}else{
//执行代码
};
- 执行流程:
- 首先计算关系表达式的值
- 如果关系表达式的值为true就执行语句体1
- 如果关系表达式的值为false就执行语句体2
- 继续执行后面的其他语句
格式三:
if (/*判断条件*/){
//执行代码
}else if{
//执行代码
}else if{
//执行代码
}else{
//执行代码
}
;
1.2.2、switch语句
switch(表达式){
case值1:
语句体1;
break;
case值2:
语句体2;
break;
default:
语句体n+1;
break;
}
- 执行流程:
- 首先计算表达式的值。
- 依次和case后面的值进行比较如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
- 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句。
格式说明
- 表达式:(将要匹配的值)取值为byte、short、int、char。JDK5以后可以是枚举,JDK7以后可以是String。
- case:后面跟的是要和表达式进行比较的值(被匹配的值)。
- break:表示中断,结束的意思,用来结束switch语句。
- default:表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
- case后面的值只能是字面量,不能是变量
- case给出的值不允许重复
default的位置和省略
- 位置: defaule不一定是写在最下面的,我们可以写在任意位置。只不过习惯会写在最下面.
- 省略: defaule可以省略,语法不会有问题,但是不建议省略。
case穿透
执行流程:
- 首先还是会拿着小括号中表达式的值跟下面每一个case进行匹配。
- 如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么结束整个switch语句。
- 如果没有发现break,那么程序会继续执行下一个case的语句体,一直遇到break或者右大括号为止。
switch新特性
JDK12以后才有的新特性
case后面跟上的{}
可以替换成->
1.3、循环结构
1.3.1、for循环
格式:
for (int i = 1 ;i <= 10 ;i++ ){
system.out.println( "Helloworld" );
}
执行流程:
- 执行初始化语句
- 执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,执行循环体语句 - 执行条件控制语句
- 回到2继续执行条件判断语句
1.3.2、while循环
格式:
初始化语句;
whi1e(条件判断语句){
循环体语句;
条件控制语句;
}
for和while的对比
相同点:
- 运行规则都是一样的
for和 while的区别:
- for循环中,控制循环的变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到
- while循环中,控制循环的变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量
还可以继续使用
1.3.3、do…while循环
格式:
初始化语句;
do {
循环体语句;
条件控制语句;
}while(条件判断语句);
1.4、回文数的判断
package huiwen;
import java.util.Scanner;
public class huiwenshu {
public static void main(String[] args) {
//输入数字
System.out.println("请输入x的值:");
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
//定义一个临时变量记录x的原来的值,用于最有进行比较
int temp = x;
int num = 0;
while (x!=0){
//从右往左获取每一个数字
int ge = x%10;
//修改以下x记录的值
x = x/10;
//把当前获取到的数字拼接到最右边
num = num*10 +ge;
}
System.out.println(num);
System.out.println(num ==temp);
}
}
1.5、求商和余数
package huiwen;
import java.util.Scanner;
public class huiwenshu {
public static void main(String[] args) {
//定义被除数
int dividend = 100;
//定义除数
int divisor = 10;
int count = 0;
//循环中用被除数-除数
//-的次数就是除的次数
while (dividend >=divisor){
dividend = dividend - divisor;
count++;
}
System.out.println("商为:"+count);
System.out.println("余数为:"+dividend);
}
}
二、循环高级
2.1、无限循环
循环一直停不下来。
for(;;){
System.out.println("学习");
}
while(true){
System.out.println("学习");
}
do {
System.out.println("学习");
} while(true);
2.2、循环的跳转控制语句
使用 continue
可以使跳过本次循环,继续执行下次循环
使用 break
可以使结束循环
2.3、逢七过
- 朋友聚会的时候可能会玩一个游戏:逢7过
- 游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说过:过
- 需求:使用程序在控制台打印出1-100之间的满足逢七必过规则的数据
for (int i = 0;i<=100;i++){
if(i%10==7||10%10==7||i%7==0){
System.out.println("过");
continue;
}
System.out.println(i);
}
2.4、求平方根
- 需求:键盘录入一个大于等于2的整数x,计算并返回×的平方根结果只保留整数部分小数部分将被舍去。
//1.键盘求入一个整数
Scanner sc = new Scanner(System.in);
System.out.println(”请输入一个整数");
int number = sc.nextInt();
//2.从1开始循环判断
//开始:1结束: number
for (int i = 1; i <= number; i++) {
//用i* i再跟number进行比较
if(i * i == number){
system.out.println(i +"就是" +number +"的平方根");
//一旦找到了,循环就可以停止了,后面的数字就不需要再找了,提高代码的运行效率。
break;
}else if(i * i > number){
system.out.println((i - 1) +"就是"+number + "平方根的整数部分");
break;
2.5、求质数
- 需求:键盘录入一个正整数x,判断该整数是否为一个质数。
scanner sc = new Scanner(system.in) ;
system.out.println("请输入一个正整数");
int number = sc.nextInt();//9
//表示最初就认为number是一个质数
//标记作用
boolean flag = true;
//2.判断
//写一个循环,从2开始判断,一直判断到number-1为止
//看这个范围之内,有没有数字可以被number整除
for (int i = 2; i < number; i++) {
//i依次表示这个范围之内的每一个数字
//看number是否能被i整除就可以了
if(number % i == o){// 9 % 2 =1
flag = false;
// system.out.println( number +“不是一个质数");
break;
}/*else{
system.out.println( number +“是一个质数");}*/
}
//只有当这个循环结束了,表示这个范围之内所有的数字都判断完毕了
//此时才能断定number是一个质数
if(flag){
system.out.println(number +"是一个质数");
}else{
system.out.println(number +"不是一个质数");
}
2.6、猜数字小游戏
- 需求:程序自动生成一个1-100之间的随机数字,使用程序实现猜出这个数字是多少?
- Java帮我们写好一个类叫Random,这个类就可以生成一个随机数。
import java.util.Random;
import java.util.Scanner;
public class LoopTest7 {
public static void main(string[] args) {
//需求:程序自动生成一个1-100之间的随机数字,使用程序实现猜出这个数字是多少?
//分析
// 1.生成一个1-100之间的随机数字Random r = new Random( );
int number = r.nextInt( bound: 100)+ 1;// 2.猜这个数字是多少
Scanner sc = new scanner(System.in);while(true){
System.out.println("请输入你要猜的数字");
int guessNumber = sc.nextInt( );
/ /3 .判断两个数字给出不同的提示//猜的数字大了,提示大了
//猜的数字小了,提示小了//猜的数字一样,提示猜中了
if(guessNumber > number){
System.out.println("大了");
}else if(guessNumber < number){
System.out.println("小了");
}else{
System.out.println("猜中了");
break;
}
}