一、程序逻辑控制语句
1、顺序结构
按照语句的书写顺序来执行
System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
//打印按照顺序执行,先输出aaa,再输出bbb,最后输出ccc
2、分支结构
(1)if / else语句
- if中的条件必须是布尔类型的,建议最好带上{},如果不带,else总是和离他最近的的那个if构成if/else语句
- if条件后面如果带了分号,条件为真则执行空语句,不执行{}里的语句
- if支持嵌套,可以有if/else if/else…
- 如果为if/else语句,则只有两种情况
//判断一个数字是奇数还是偶数(if/else)
int num = 10;
if(num%2==0){
System.out.println("num是偶数");
}else{
System.out.println("num是偶数");
}
//判断一个数是正数还是负数(if/else if/else)
int x = 10;
if(x<10){
System.out.println("x是负数");
}else if(x>10){
System.out.println("x是正数");
}else{
System.out.println("x是0");
}
//条件后面带了分号
int y = 20;
if(y==10);{
System.out.println("haha");
}
//运行结果 haha
(2)switch/case语句
- switch中的值只能是整数、枚举、字符、字符串
- switch中的每一个case都要有break;有break,只会执行其中一条,没有break,程序不会报错,但是会按照顺序结构继续往下执行
- 建议每个switch后面带有default,如果没有与之匹配的case执行default语句,提示用户输入有误
- switch不能表达复杂的条件,只根据单一的条件执行某个分支或者跳出来 支持嵌套,但一般不这样写,不美观
//没有break,顺序执行
double num = 1.0;
switch(num){
case 1.0:
System.out.println("haha");
break;
case 2.0:
System.out.println("hehe");
break;
}
//编译出错 Test.java:4: 错误:不兼容的类型: 从double转换到int可能会有损失
int day = 1;
switch(day){
case 1:
System.out.println("今天是星期一");
case 2:
System.out.println("今天是星期二");
break;
}
//运行结果
//今天是星期一
//今天是星期二
3、循环结构
(1)while循环
//打印1-10的数字
int num = 1;
while(num<=10){
System.out.println(num);
num++;
}
(2)for循环
for(int num = 1;num<=10;num++){
System.out.println(num);
}
(3)do…while()循环
//打印1-10的数字
int num = 1;
do{
System.out.println(num);
num++;
}while(num<=10);
三种循环的条件都为布尔类型,建议写代码时都带上{},不易出错,对于while循环和for循环,如果直接在for或者while条件后面直接带分号,则条件为真执行空语句,需要注意,while和do…while(),do…while()无论条件为真为假都会执行一次语句,而while必须先判断条件,一般while和for用的较多。
4、break和continue
(1)break:结束循环,结束大循环,即退出循环
(2)continue:结束循环,结束本次循环,执行下次循环
//找到100-200中第一个3的倍数
int num = 100;
while (num <= 200) {
if (num % 3 == 0) {
System.out.println("找到了 3 的倍数, 为:" + num);
break;
}
num++;
}
//102
int num = 100;
while (num <= 200) {
if (num % 3 != 0) {
num++;
continue;
}
System.out.println("找到了 3 的倍数, 为:" + num);
}
//102
二、输入输出方式
1、输入方式
(1)读入一个字符:System.in.read();不过要和后面的异常搭配使用,否则编译会出错
(2)使用scanner读取
- next();遇到空白符结束读取
- nextLine();遇到换行符结束读取
- nextInt();只会读整型数,不读取回车,并将光标放在该行,如果下条语句是nextLine();则读取不了数据,将换行读取后直接输出换行,如果还想继续读取,需要在nextInt后面加上nextLine,再继续用nextLine读取
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数");
int num = sc.nextInt();
String s = sc.nextLine();
System.out.println("OK");
//请输入一个数
//32
//OK
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数");
int num = sc.nextInt();
String str = sc.nextLine();
System.out.println("请输入一个名字");
String s = sc.nextLine();
System.out.println("OK");
//请输入一个数
//54
//请输入一个名字
//张三
//OK在这里插入代码片
2、输出方式
(1)println():输出并且换行
(2)print():输出但不换行
(3)printf():格式化输出,类似于C语言