1、顺序结构
按照代码书写的顺序一行一行执行
2、分支结构
1)if语句
单分支
if(布尔类型表达式){
...
}
双分支
if(布尔类型表达式){
...
} else {
...
}
多分支
if(布尔类型表达式){
...
} else if(布尔类型表达式){
...
} else {
...
}
2)switch语句
switch(参数){
case 内容一:{
内容满足时执行语句;
break;
}
case 内容二:{
内容满足时执行语句;
break;
}
...
default :{
内容都不满足时执行语句;
break;
}
}
示例
int a = 2;
switch (a){
case 3:{
System.out.println("羽毛球");
break;
}
case 2:{
System.out.println("篮球");
break;
}
default:{
System.out.println("棒球");
break;
}
}
注意:参数类型不能是(long、float、boolean、double)可以是(整型、枚举、字符、字符串)
3、循环结构
1)while循环
循环条件为 true执行循环语句;否则不执行
while(循环条件){
循环语句;
}
示例1:求5!+4!+3!+2!+1!的和
public static void main(String[] args) {
int i = 1;
int a = 1;
int num = 0;
while (i < 6){
a*=i;
num +=a;
i++;
}
System.out.println(num);
}
//结果为
153
示例2:求1-100的和
public static void main(String[] args) {
int i = 1;
int sum = 0;
while ( i <= 100){
sum += i;
i++;
}
System.out.println(sum);
}
//结果为
5050
2)break
让循环提前结束,即跳出循环
示例1:找出离1最近的一个偶数
for (int i = 1; i < 6 ; i++) {
if (i % 2 == 0){
System.out.println("第一个偶数");
break;
}
}
示例2:
for (int i = 1; i < 6 ; i++) {
for (int j = 1; j < 6; j++) {
if (j == 1){
System.out.println(j);
System.out.println("跳出第一个循环");
break;
}
}
if (i == 1) {
System.out.println("跳出第二个循环");
break;
}
}
3)continue
结束此次循环,进入下一次循环
示例1:找到100-200中3的所有倍数
int num = 100;
while (num <= 200) {
if (num % 3 != 0) {
num++; // 这里的 ++ 不要忘记! 否则会死循环.
continue;
}
System.out.println("找到了 3 的倍数, 为:" + num);
num++;
}
4)for 循环
for(表达式1;表达式2;表达式3){
循环体;
}
表达式1:用于初始化循环变量
表达式2:循环条件
表达式3:更新循环变量
示例:计算1-100的奇数和
int sum = 0;
for (int i = 1; i <= 100; i=i+2) {
sum+=i;
}
System.out.println(sum);
//结果为2500
4、输入输出
1)输出到控制台
System.out.println("输出且换行");
System.out.print("输出不换行");
System.out.printf("格式化输出");
2)从键盘输入
直接使用 System.in.read 可以读入一个字符. 但是需要搭配异常处理
import java.io.IOException; //需要导入包IOException
public static void main(String[] args) throws IOException{
char a = (char)System.in.read();
System.out.println(a);
}
使用 Scanner 读取字符串/整数/浮点数
import java.util.Scanner; // 需要导入 util 包
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
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 个数字
Scanner sc = new Scanner(System.in);
double sum = 0.0;
int num = 0;
while (sc.hasNextDouble()) {
double tmp = sc.nextDouble();
sum += tmp;
num++;
}
System.out.println("sum = " + sum);
System.out.println("avg = " + sum / num);
sc.close();
// 执行结果
10
40.0
50.5
^Z
sum = 150.5
avg = 30.1