目录
一.程序的三大结构
-
顺序结构:程序只能从第一行开始执行,中间不能跳过某一行代码,去执行后续代码。
-
选择结构:打破顺序结构的限制,可以让代码进行有选择的执行,也就是说某一行或者某几行代码在条件不符合的时候不执行。
-
循环结构:让某一行或者某几行代码可以重复多次执行。
二.关系运算符
名称 | 大于 | 大于等于 | 等于 | 小于等于 | 小于 | 不等于 |
付哈 | > | >= | == | <= | < | != |
ps:在初识Java(二)中学习了赋值运算符,算数运算符以及自增自减运算符。
注:=为赋值运算符,==才表示等于。
三.关系表达式
-
用关系运算符连接起来的算式我们称之为关系表达式。
-
关系表达式的值是一个逻辑值,即"真"或"假"。
-
关系表达式的结果只能是"真"或者"假"两种情况。
四.boolean类型
- 在全宇宙范围内,布尔类型的值只有两个,真:true ; 假:false 。
ps:到现在已学习了五种类型:整型int,双精度浮点型double,字符串类型String,字符型char以及布尔类型boolean。
五.if选择结构
- 流程图
ps:流程图可以帮助我们梳理编程的步骤和逻辑。
- 基本语法:
if(条件){
//代码块
}
- 当条件成立,即表达式的值为真(非0)时,执行"语句1";否则执行if语句的下一个语句。
if案例
- 如果小明在期中考试语文大于90分,小明的妈妈就会奖励小明一个篮球。
import java.util.Scanner;
public class lian {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int score = input.nextInt();
if (score > 90){
System.out.println("小明得到妈妈奖励的篮球");
}
}
}
练习
- 输入一个整数,判断是不是偶数,若是则输出“是偶数”。
import java.util.Scanner;
public class lian {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num = input.nextInt();
if (num % 2 == 0){
System.out.println(num + "是偶数");
}
}
}
六.if - else选择结构
-
流程图
- 基本语法
if(条件){
//代码块1
}else{
//代码块2
}
- 当条件成立,即表达式值为真(非0)时,执行"代码块1",否则执行else后的"代码块2"。
ps:if和else互斥,不可能同时执行。(As:生活中的十字路口)
if - else案例
-
在体育测试中,若一分钟的跳绳次数大于等于180次则为"合格",否则为"不合格"。
-
做题思想流程图
import java.util.Scanner;
public class lian {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num = input.nextInt();
if (num >= 180){
System.out.println("合格");
}else{
System.out.println("不合格");
}
}
}
练习题
- 给定一个数,判断该数是奇数还是偶数。如果为奇数,则输出odd;如果为偶数,则输出even。
import java.util.Scanner;
public class lian {
public static void main(String[] args) {
System.out.println("请输入一个整数:");//提示用户输入信息
Scanner input = new Scanner(System.in);//接收用户输入的信息
int num = input.nextInt();
if (num %2 == 0){//进行判断,是否有余数
System.out.println("even");//是偶数则输出even,不是则执行后面的语句
}else{
System.out.println("odd");//输出odd
}
}
}
七.多重if选择结构
-
多重 if 既可以做等值判断,也可以做范围判断。
-
基本语法
if (条件1){
//代码块1
}else if (条件2){
//代码块2
}else {
//代码块3
}
多重if选择结构案例
-
对学员的期末考试进行评测,成绩>=90为优秀,成绩>=为良好,成绩>=70为中等,成绩>=60为合格,成绩<60为不及格。
import java.util.Scanner;
public class lian {
public static void main(String[] args) {
System.out.println("请输入一个学生的分数:");//提示用户输入信息
Scanner input = new Scanner(System.in);//接收用户输入的信息
int score = input.nextInt();
if (score >= 90){
System.out.println("优秀");
}else if (score >= 80){
System.out.println("良好");
}else if (score >= 70){
System.out.println("中等");
}else if (score >= 60){
System.out.println("及格");
}else {
System.out.println("不及格");
}
}
}
ps :多重 if 可以没有最后的else,用else if 再做一次判定,系统也不会报错。
import java.util.Scanner;
public class lian {
public static void main(String[] args) {
System.out.println("请输入一个学生的分数:");//提示用户输入信息
Scanner input = new Scanner(System.in);//接收用户输入的信息
int score = input.nextInt();
if (score >= 90){
System.out.println("优秀");
}else if (score >= 80){
System.out.println("良好");
}else if (score >= 70){
System.out.println("中等");
}else if (score >= 60){
System.out.println("及格");
}else if (score < 60){
System.out.println("不及格");
}
}
}
- 多重 if 在使用过程中的注意事项
-
在写很多个不同分支结构的 if 时,我们需要从高到低或者从低到高按照次序写代码,如果不按照次序写代码的话,结果可能会出现和我们的预期不一致的现象。
练习
- 输入两个整数,比较它们的大小。若 x > y,输出 >;若 x = y,输出 = ;若 x < y,输出 <。
import java.util.Scanner;
public class lian {
public static void main(String[] args) {
System.out.println("请输入两个整数:");//提示用户输入信息
Scanner input = new Scanner(System.in);//接收用户输入的信息
int num1 = input.nextInt();
int num2 = input.nextInt();
if (num1 > num2){
System.out.println(">");
}else if (num1 == num2){
System.out.println("=");
}else{
System.out.println("<");
}
}
}
八.嵌套if选择结构
-
在 if 语句中又包含一个或者多个 if 语句,称为 if 语句的嵌套。
-
大体框架
- 语法结构
if (条件1){ if (条件2){ //代码块1 } }else { //代码块2 } }else{ //代码块3 }
嵌套if选择结构案例
- 写一个登陆程序,输入正确的用户名和密码,输出语句"欢迎您!",否则输出"用户名不正确!"或者"密码错误!"。
import java.util.Scanner;
import java.util.concurrent.Callable;
public class lian {
public static void main(String[] args) {
//准备一个正确的用户名以及密码
final String UNAME = "李";
final String UPW = "555555";
//提示输入用户名和密码
System.out.println("请输入用户名:");
Scanner input = new Scanner(System.in);
String uname =input.next();
//比较输入的数据是否和准备的用户名和密码一致
if (uname.equals(UNAME)){
//如果用户名输入正确,则继续运行下面的代码
//否则返回”用户名不正确!“
System.out.println("请输入密码:");
String upw = input.next();
if (upw.equals(UPW)){
//继续比较密码,如果正确则返回欢迎您!
//如果错误则返回”密码错误!“
System.out.println("欢迎您!");
}else{
System.out.println("密码错误!");
}
} else {
System.out.println("用户名不正确!");
}
}
}
ps:在Java中,比较两个字符串的时候,要用equals。
练习
- 输入一个整数,若这个数 > 1并且 < 100,则输出 yes ,否则输出 no。
import java.util.Scanner;
import java.util.concurrent.Callable;
public class lian {
public static void main(String[] args) {
// 输入一个整数,若这个数 > 1并且 < 100,则输出 yes ,否则输出 no。
//提示输入一个整数
System.out.println("请输入一个整数:");
Scanner input = new Scanner(System.in);
int num =input.nextInt();
//对输入的数进行判断
if (num > 1){
//如果输入的数 > 1,则继续运行下面的代码
//否则返回”no“
if (num < 100){
//继续判断输入的数是否 < 100
//如果 < 100,则返回”yes“,如果 > 100,则返回no。
System.out.println("yes");
}else{
System.out.println("no");
}
} else {
System.out.println("no");
}
}
}
逻辑运算符
逻辑与 | 逻辑或 | 逻辑非 |
&& | | | | ! |
-
逻辑三兄弟:逻辑与(&&)、逻辑或(| |)、逻辑非(!)
-
逻辑与(3>1&&5>3):如果表达式A为真,同时表达式B也为真,整体结果为真。简记:同真为真,其余为假。
-
逻辑或(A | | B):表达式A和B中,只要有一个为真,整个表达式的结果就可以为真。简记:有真必真,其余为假。
-
逻辑非(!):取反。原来是真的,取反后结果为假。
学习了逻辑运算符后,那么上面的题代码可以简化为:
import java.util.Scanner;
public class lian {
public static void main(String[] args) {
// 输入一个整数,若这个数 > 1并且 < 100,则输出 yes ,否则输出 no。
//提示输入一个整数
System.out.println("请输入一个整数:");
Scanner input = new Scanner(System.in);
int num =input.nextInt();
//对输入的数进行判断
if (num > 1 && num < 100){
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
九.switch选择结构
-
适用于条件判断是等值判断的情且只能做等值判断。
-
switch应用的场景是有限的。优点:可以简化代码,使程序员输入代码的时间更短。
-
语法结构
switch (表达式){ case 常量1: //语句; break; case 常量2: //语句; break; //··· default: //语句; break; }
switch选择结构案例
-
根据输入的数字,代表周几,打印该日菜单
-
周一(1):红烧肉
-
周二(2):土豆牛肉
-
周三(3):炸鸡
-
周四(4):汉堡
-
周五(5):麻婆豆腐
import java.util.Scanner;
public class lian {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数字:");
int day = input.nextInt();
switch (day){
case 1:
System.out.println("红烧肉");
break;
case 2:
System.out.println("土豆牛肉");
break;
case 3:
System.out.println("炸鸡");
break;
case 4:
System.out.println("汉堡");
break;
case 5:
System.out.println("麻婆豆腐");
break;
default:
System.out.println("今日未提供菜品。");
break;
}
}
}
- Switch注意事项
-
常量:int char String
-
一定要在每一个case块以及default后加上break,否则造成case穿透,也就是代码会一直向下执行,直到碰到第一个break。
-
如果多个变量值,输出的语句相同,可以共用一个break节省程序员时间。
Ag:星期一到星期三的菜品都是炸鸡就可以优化代码如下
switch (day){
case 1:
case 2:
case 3:
System.out.println("炸鸡");
break;
}
十.选择结构的对应练习题
- (一)输入三个数,输出其中最大的数。
import java.util.Scanner;
public class lian {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入三个数字:");
int first = input.nextInt();
int second = input.nextInt();
int third = input.nextInt();
//一定要默认一个最大值。一般处理方式都是将第一个数字作为最大值。
int max = first;
if (second > max){
max = second;
}if (third > max){
max = third;
}//经过这样一个过程,那么最后保存在max中的值就是最大值。
System.out.println("最大值为:" + max);
}
}
- (二)判断输入的年份是否为闰年,如果是闰年就输出“是闰年”,否则就输出“平年”。
import java.util.Scanner;
public class lian {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入年份:");
int year = input.nextInt();
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
System.out.println("闰年");
}else
System.out.println("平年");
}
}
十一.笔记
-
使用Scanner需要先导包 import java.util.Scanner。
-
流程图符号代表的含义
-
input.nexInt();后按住alt+enter能够快速补全代码并生成变量。
-
在Java中,比较两个字符串的时候,要用equals。
-
switch:转换。