逻辑控制
逻辑控制分为:选择语句、循环语句
一、if和switch选择语句
顺序中夹杂着循环,伴随着一次次的选择不断地成长
1.if语句
选择语句
单分支
if()
表达式;
java
int a6=0;
if(a6==0)
{
System.out.println("a6==0");
}

双分支
if(){
表达式1;
}else{
表达式2;
}
java
int a4=10;
if(a4==10){//括号内时布尔表达式
System.out.println("a4==10");
}else {
System.out.println("a4!-10");

多分支
if(){
表达式1;
}else if(){
表达式2;
}else
表达式3;
java
int a5=10;
if(a5==10){
System.out.println("a5==1");//执行这个语句
} else if (a5==2) {
System.out.println("a5==2");
} else if (a5==3) {
System.out.println("a5==3");
} else if (a5==4) {
System.out.println("a5==4");
}else{
System.out.println("a5==5");
}

2.switch 语句
switch(变量)
case 1:
语句1;
break;
case 2:
语句2;
break;
case 3:
语句3;
break;
......
default:
语句n,当都不满足所有的case时;
break用来退出switch语句

java
String str="abc";
switch (str) {
case "abc":
System.out.println("abc");
break;
case "123":
System.out.println("123");
break;
default:
System.out.println("您输入有误");
//可以是枚举

面试题:不能作为Switch参数的数据类型是什么?
float、double、boolean、long 这四种类型不能作为switch的参数
字符串String和字符char类型可以作为Switch的参数
3.Switch表达式和if表达式的区别
Switch表达式的参数不能是一个复杂的表达式,只能使用if表达式
二、练习:
1.判断一个数字是偶数还是奇数
java
//练习题:判断一个数字是偶数还是奇数
int num=10;
if(num%2==0) {
System.out.println("num是一个偶数");
}else{
System.out.println("num是一个奇数");
}

2.判断一个数是奇数、偶数还是0
java
//练习题2:判断一个数是正数还是负数还是0
int num2=-5;
if(num2>0) {
System.out.println("num2是正数");
}else if(num2==0){
System.out.println("num2是0");
}else{
System.out.println("num2是负数");
}

3. 判断一个年份是否是闰年
普通闰年:年份是4的倍数,且不是100的倍数
世纪闰年:年份是400的倍数
java
//练习题3:键盘上输入一个年份,判断是否是闰年
System.out.println("请输入一个年份");
Scanner sc1=new Scanner(System.in);
int year=sc1.nextInt();
if((year%4==0)&&(year%100!=0)){
System.out.println(year+"是一个普通闰年");
} else if (year%400==0) {
System.out.println(year+"是一个世纪闰年");
}else{
System.out.println(year+"不是闰年");
}

Scanner输入函数
头文件:import java.util.Scanner;//自动生成
函数: Scanner sc1=new Scanner(System.in);
int year=sc1.nextInt();
必须定义变量接收函数的值,否则无法使用,键盘上输入一个数,用读数必定义一个变量
java
import java.util.Scanner;//头文件
Scanner sc1=new Scanner(System.in);
int year=sc1.nextInt();
switch语句支持嵌套,但是代码比较丑陋,不推荐使用

二、三个循环语句

1.while循环
条件:必须是一个布尔表达式
java
int a = 1;
while(a <= 10){
System.out.println(a);
a++;//条件要发生变化,不然会死循环
}

练习题1:计算5的阶乘
java
//练习题4:求5的阶乘
int b=1;
int ret=1;
while(b<=5){
ret=ret*b;
b++;
}
System.out.println("ret="+ret);

练习题2:计算5的阶乘的和 1!+2!+3!+4!+5!
java
//练习题4:求5的阶乘
int b=1;
int ret=1;
int sum=0;
while(b<=5){
ret=ret*b;
b++;
sum=sum+ret;
}
System.out.println("ret="+ret);
System.out.println("sum="+sum);

循环可以进行嵌套

注意事项:
好的代码,可读性很高

2.break------结束循环,不管循环还有几次
break的功能是让循环提前结束
案例:
java
public class day_5 {
public static void main(String[] args) {
int i=1;
while(i<=10){
if(i==3){
break; //跳出循环
}
System.out.println(i);
i++;
}
}
}

3.continue------跳出本次循环
continue是跳过本次循环,本次循环之后的循环条件继续执行
案例:
java
public class day_5 {
public static void main(String[] args) {
int i1=1;
while(i1<=10){
if(i1==3){
i1++;
continue; //跳出本次循环 死循环了 本次循环之后都将不会执行
}
System.out.println(i1);
i1++;
}

4.break,continue语句案例
写一个代码,找到1-100之间,
既能被3整除,也能被5整除的所有数字,使用break或者continue中的一个
代码实现
java
int i2=1;
for(i2=1;i2<=100;i2++) {
if(i2%3==0&&i2%5==0){
System.out.println(i2);
continue;
}
运行结果

5.for循环

案例 1
打印1到10的数字
代码实现
java
//for循环打印一个1-10的数字
int i3=0;
for(i3=1;i3<=10;i3++){
System.out.print(i3+" ");
}
运行结果

快捷方式:fori
案例 2
求5的阶乘
代码实现
java
//for循环求5的阶乘的和
int i4=1;
int sum=1;
for (i4 = 1; i4 <= 5; i4++) {
sum*=i4;
}
System.out.println("sum="+sum);
运行结果
案例3
求5的阶乘的和
代码实现
java
//for循环求5的阶乘的和
int i5=1;
int sum2=1;
int he=0;
for(i5=1;i5<=5;i5++){
sum2*=i5;
he+=sum2;
}
System.out.println("阶乘的和="+he);
运行结果

6.do-while循环
先执行再判断,最少执行一次,用的比较少
语句
do{
循环语句;
}while(循环条件);
注意事项
1.do while循环最后的分号不要忘记
2.一般do while很少用到,while循环和for循环用的比较多
三、输入输出
1.输出到控制台

基本语法
System.out.println(msg); 输出一个字符串且换行
System.out.print(msg); 输出一个字符串,不换行
System.out.printf(format,msg); 格式化输出
2.从键盘中输入
要进行导包(输入头文件):import java.util.Scanner;

输入什么,next什么
java
Scanner sc1=new Scanner(System.in);
String name=sc1.nextLine();
int age=sc1.nextInt();
float num1=sc1.nextFloat();
System.out.println("姓名"+name+"\n"+"年龄"+"\n"+"工资"+num1);


3.循环输入
Scanner 变量名 = new Scanner(System.in);
变量名.hasNextInt() ;观察输入字符是否为空
CTRL+z; 结束循环输入
java
//循环输入
Scanner sc2=new Scanner(System.in);
while(sc2.hasNextInt()){
int a1=sc2.nextInt();
System.out.println(a1);
}
运行结果

注意事项
当循环输入多个数据的时候,使用 CRTL+z 来结束输入