1.顺序结构
按照书写顺序,一步一步走
2.分支结构
2.1 if语句
if(判断条件){
执行语句1;
}else if(判断条件){
执行语句2;
}else{
执行语句3;
}
tip:else会跟最近的if匹配
3个例题:
①判断一个数字是奇数还是偶数?
public static void main(String[] args) {
int num = 10;
if(num%2==0){
System.out.println("该数为偶数");
}else {
System.out.println("该数为奇数");
}
}
②判断一个数字是正数,负数还是0?
public static void main(String[] args) {
int num = 5;
if(num>0){
System.out.println("该数为正数");
} else if (num<0) {
System.out.println("该数为负数");
}else {
System.out.println("该数是0");
}
}
③判断一个年份是不是闰年?
(是4的倍数且不是100的倍数或者是400的倍数)
public static void main(String[] args) {
int year = 2020;
if ((year%400==0) || (year % 4 == 0 && year%100!=0)){
System.out.println("该年份为闰年");
}
}
2.2switch语句
switch(表达式){
case 目标值1:
执行语句1;
break;
case 目标值2:
执行语句2;
break;
.......
case 目标值n:
执行语句n;
break;
default:
执行语句n+1;
break;
}
不能做switch参数的数据类型有哪些?
基本数据类型:
float double long
int a = 1;
switch(a){
case 1:
System.out.println("1");
break;
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
break;
default:
break;
A.default的位置和省略
a.位置:default不一定写在最下面,我们可以写在任意位置,只不过习惯会写在最下面。
b.省略:default可以省略,语法没有问题,但是不建议省略。
B.case穿透
break不能省略,否则会产生case穿透。
执行流程:首先还是会拿着小括号中的表达式的值跟下面每一个case进行匹配。如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么就会结束整个switch语句。如果没有发现break,那么程序会继续执行下一个case的语句题,一直遇到break或者大括号为止。
使用场景:如果多个case的语句重复了,就会用到case穿透。
C.switch新特性
需要更新到JDK14+
省略了break,只有一行代码,大括号也可以省略。
D.switch和if的第三种格式的使用场景。
if的三种格式:一般用于对范围的判断
switch:把有限个个数一一列举出来,让我们任选其一。
3.循环结构
每个循环都是一个独立的个体。
3.1while循环
while(布尔表达式){循环体;}
例子:
①打印1-10的数字。
public static void main(String[] args) {
int i = 0;
while(i<10){
i++;
System.out.println(i);
}
}
死循环---》条件一直为真。
②5的阶乘
public static void main(String[] args) {
int n = 1;
int num = 1;
while(n<=5){
num*=n;
n++;
}
System.out.println(num);
}
1!+2!+3!+4!+5!
public static void main(String[] args) {
int n = 1;
int num = 1;
int sum = 0;
int j = 1;
while (j <= 5) {
while (n <= j) {
num *= n;
n++;
}
sum += num;
j++;
}
System.out.println(sum);
}
3.2break
功能是让循环提前结束。剩下多少趟都不会执行。
打印100-200中第一个三的倍数。
//打印100-200中第一个三的倍数。
public static void main(String[] args) {
int i = 100;
while(i<=200){
if(i%3==0){
System.out.println(i);
break;
}
i++;
}
}
3.3continue
(跳过这次循环,进行下次循环。)
(continue后面的东西不会被执行)
例题:
找到100-200中三的倍数。
//打印100-200中三的倍数。
public static void main(String[] args) {
int i = 100;
while(i<=200){
if(i%3==0){
System.out.println(i);
i++;
continue;
}
i++;
}
}
求出既能被3整除又能被4整除的数字。
public static void main(String[] args) {
int num = 100;
while(num<=200){
if(num%3==0&&num%4==0){
System.out.println(num);
num++;
continue;
}
num++;
}
}
3.4for循环
for(表达式①;布尔表达式②;表达式③){表达式④}
计算1-5的阶乘
public static void main6(String[] args) {
int sum = 0;
for(int num = 1;num<=5;num++) {
int ret = 1;
for(int i = 1;i<=num;i++){
ret = ret *i;
}
sum += ret;
}
System.out.println(sum);
}
3.5do while循环
do{
执行语句;
...;
}while(循环条件);
至少会循环一次。
例题:猜数字游戏
public static void main(String[] args) {
//初始化
Scanner sc = new Scanner(System.in);
//生成一个随机数
int num = (int)(Math.random()*100+1);
//记录猜了几次
int count = 0;
int guess;
do{
System.out.println("请输入猜测的数字(1-100):");
guess = sc.nextInt();
count++;
if (guess>num){
System.out.println("猜大了");
}else if(guess<num){
System.out.println("猜小了");
}
}while (guess!=num);
System.out.println("猜对了,总共猜测总数为"+count);
}
4.输入输出
4.1输出到控制台
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name= scan.nextLine();//读入一行
System.out.println("姓名:"+name);
}
nextline 读入一行 next是遇到空格结束!
//单个数据的读入
import java.util.Scanner; // 需要导入 util 包
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();//,nextline读入一行,next是遇到空格结束
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);sc.close();
// 注意, 要记得调用关闭
// 执行结果
请输入你的姓名:
张三
请输入你的年龄:
18
请输入你的工资:
1000
你的信息如下:
姓名
:
张三
年龄:
18
工资:
1000
.
0
多个数据的读入
使用 Scanner 循环读取 N 个数字,并求取其平均值
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int sum = 0;
int num = 0;
while (sc.hasNextInt()) {//是否有下一个数
int tmp = sc.nextInt();
sum += tmp;
num++;
} System.out.println("sum = " + sum);
System.out.println("avg = " + sum / num);
sc.close();
}//使用ctrl+d结束,通常使用验证
// 执行结果
注意事项: 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl+ d).