1、知识点:
1.Java选择结构
1.1.关系运算符
可以通过关系运算符获取两个表达式之间的关系: >,<,>=,<=,,!=
如果是一个字符串比较是否相等不可以使用 必须通过equals来判断字符串是否相同
int num1 = 30;
int num2= 40;
boolean isEquals = num1 == num2;
System.out.println(“是否相等:” + isEquals);
String name1 =“赵丽丽”;
String name2 = “赵丽丽”;
System.out.println(“是否相等:” + name1==name2);
System.out.println(“是否相同:” + name1.equals(name2));
1.2.逻辑运算符
当存在多个表达式的时候,多个表达式之间存在的关系使用逻辑运算符体现
&& 并且 ||或者 !非
&&当两个或两以上的表达式每一个的表达式结果都为true则整个表达式结果才为true ,只要存在任意一个表达式为false 则整个表达式的结果为false
//如果语文和数学的成绩都超过95才能奖励否则没有奖励
||或多个表达式中,只要存在一个表达式的结果为true,则可以断定整个表达式都为true,如果所有的表达式结果都是flase则整体flase
//如果语文数学的考试成绩有任何一科成绩100分也奖励
!非 除了某一个条件之外,剩下的都可以
//整体的奖励条件为:语文和数学的成绩都超过95分或语文数学的考试成绩有任何一科成绩100分都奖励
//多个判断的条件
System.out.println(“请输入一个语文成绩”);
int ywScore = input.nextInt();
System.out.println(“请输入一个数学成绩”);
int sxScore = input.nextInt();
if((ywScore>95 && sxScore>95) || ywScore==100 ||sxScore==100){
System.out.println("奖励");
}else{
System.out.println("不奖励");
}
1.3.选择结构的分类
1.3.1.if结构
语法 if(判断条件){执行代码块;} 如果判断条件为真才会执行:代码块,否则不执行,如果执行代码块中只存在一个语句则{}可以省略
Scanner input = new Scanner(System.in);
System.out.println(“请输入考试成绩”);
int score = input.nextInt();
//if(判断条件){执行代码块;} 如果执行代码块中只存在一个语句则{}可以省略
if(score> 95 ){
System.out.println(“去吃一顿必胜客”);
}
1.3.2.If(判断条件){代码块A;}else{代码块B;}结构
如果判断条件为真则执行代码A,如果判断条件为假则执行代码块B
//如果考试成绩大于95分,则继续奖励100元否则抄写试卷2遍
if(score >95){
System.out.println(“奖励100元”);
}else{
System.out.println(“抄写试卷2遍”);
}
1.4.多路选择结构
1.4.1.Switch()结构
switch结构:一般用于多个定值判断
Switch(表达式){ case 值1: 代码A ; break; case 值2:代码B; break; default: 默认代码3 ;}
如果表达式的结果的值等于 值1,则执行代码A,依次类推,如果表达式的结果不等于任何一个case 的值,则寻找default执行默认代码
switch(weekday){
case “星期一”:
System.out.println(“来一份红烧肉”);
break;
case "星期二":
System.out.println("来一份醋溜土豆丝");
break;
case "星期三":
System.out.println("来一份麻辣香锅");
break;
case "星期四":
System.out.println("来一份炝炒圆白菜");
break;
case "星期五":
System.out.println("来一份水煮肉");
break;
case "星期六":
System.out.println("来一份花生米");
break;
/*注释了
default:
System.out.println("无此日子");
break;
*/
case "星期日":
System.out.println("来一份花生米");
break;
default:
System.out.println("无此日子");
}
注意点:
1:default 可以出现在switch结构中的任意地方,如果default不是最后一段代码,需要在default结束之后增加break语句
2:switch的判断语句可以判断的数据类型为:String,int,char,byte,enum(枚举)
3:每个case 后都需要有break ,如果没有break 在执行case 的时候不会停止,会一致执行下面所有的case 语句,直到遇到break未知
4:switch只能进行等值判断不能进行范围判断
1.4.2.多重if
If(表达式一){代码A}else if(表达式2)(代码块B;)else{代码块3;}
多个if 组成的结构成为多重if,在多重if中如果任意一个表达式判断条件为真,则不会进行其余表达式的验证,一般来说多重if用于实现范围判断
System.out.println(“请输入考试成绩”);
int score = input.nextInt();
//使用多重if判断
if(score> 90 ){
System.out.println(“奖励100”);
}else if(score>85 ){
System.out.println(“奖励50”);
}else if(score>80){
System.out.println(“奖励30”);
}else{
System.out.println(“本次没有奖励”);
}
注意点:在多重if的判断语句中,多个表达式的顺序不能调换位置,需要把最小范围的条件放在多重if的最上面(除非条件的判断是一个闭合范围100< sss >90)
1.5.嵌套选择结构
在任何if,ifelse ,switch,多重if中,的任何代码块中嵌入另一个选择结构,这种情况就属于嵌套IF
语法:
If(){
Switch(){
}
}else{
If(){
}
}
注意:在嵌套选择结构中,尤其需要注意代码的缩进,要分明的体现代码的层次
Int num1 = 20, num2 = 30,num3=10;
If(num1>20)
If(num1>30)
num3 = 50;
Else
num3 = 60;
Num3 执行完代码之后应该是多少num3 10
公园门票的问题:
旺季(5-10月)门票100元,淡季(除了旺季剩下的)门票8折,小孩免费<小于6岁>,学生半价<2岁到21岁>,老人不要钱<大于60岁>,编写程序,根据月份和年龄,判断应该消费多少钱购买门票
//使用嵌套判断,首先判断淡旺季的问题,然后在淡旺季中判断年龄
System.out.println(“请输入月份”);
int month = input.nextInt();
System.out.println(“请输入年龄”);
int age = input.nextInt();
//判断淡季和旺季
int ticket = 100;
if(month>=5 && month<=10){
//判断年龄
if(age<=6){
System.out.println("儿童免费");
}else if(age<=21){
System.out.println("旺季,学生变价:"+ ticket*0.5);
}else if(age>=60){
System.out.println("老人免费");
}else{
System.out.println("旺季普通门票:"+ ticket);
}
}else if(!(month>=5 && month<=10))
{
//判断年龄
if(age<=6){
System.out.println("儿童免费");
}else if(age<=21){
System.out.println("淡季,学生变价:"+ ticket*0.5*0.8);
}else if(age>=60){
System.out.println("老人免费");
}else{
System.out.println("淡季普通门票:"+ ticket*0.8);
}
}
根据输入的年份和月份,输出该月一共有多少天
//一三五七八十腊31日永不差,2月平年28闰年29,
//闰年的判断条件:能被4整除,不能被100整除或者能被400整除
System.out.println("输入年份");
int year = input.nextInt();
System.out.println("输入月份");
int month = input.nextInt();
int days =0;
boolean isRright = true; //用于标识月份输入是否正确,默认正确
//使用定值判断判断月份
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 2:
if((year % 4 ==0 && year%100==0) || year%400==0)
days = 29;
else
days=28;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
default:
isRright = false; //月份输入错误
}
//判断是否输入了正确的信息
if(isRright == true)
System.out.println(year+"年"+month+"月"+"一共有:"+days+"天");
else
System.out.println(year+"年没有"+month+"月");
System.out.println("程序结束");
2、小练习-购物清单-变量的使用
import java.util.Scanner;
/**
-
@author 作者 :xxxxx
-
@date 创建时间:2019年7月22日 上午10:07:10
-
@version 1.0
/
public class ShopMenu {
public static void main(String[] args) {
//利用变量的输入输出,和计算实现一个购物小票的功能
/*
* 商品名称 单价 数量 小计
* 苹果电脑 22 2 44
* 方便面 2.5 5 12.5
* 一共消费:56.5
* 本次几分:18分
* 缴费:60
* 找零:3.5
*///分析:需要输入商品的信息 //定义一些相关的变量,然后输入相关信息,计算相关的数据,显示相关结果 Scanner input = new Scanner(System.in); //1定义相关变量 String prodName1;//商品名称 String prodName2; double prodPrice1;//商品价格 double prodPrice2; int prodNum1;//商品数量 int prodNum2; double prodTotal1;//商品小计 double prodTotal2; double prodSum;//商品总价 int score;//积分 int pay;//缴费 double check;//找零 //2开始业务 System.out.println("请输入第一件商品名称"); prodName1 = input.nextLine(); System.out.println("请输入第二件商品名称"); prodName2 = input.nextLine(); System.out.println("请输入第一件商品价格"); prodPrice1 = input.nextDouble(); System.out.println("请输入第二件商品价格"); prodPrice2 = input.nextDouble(); System.out.println("请输入第一件商品数量"); prodNum1 = input.nextInt(); System.out.println("请输入第二件商品数量"); prodNum2 = input.nextInt(); //3计算业务数据(隐式数据类型转换) prodTotal1 = prodPrice1 * prodNum1; prodTotal2 = prodPrice2 * prodNum2; //计算总价格 prodSum = prodTotal1 + prodTotal2; //计算总积分 score = (int)(prodSum / 3); //4输出结果 System.out.println("商品名称\t单价\t数量\t小计"); System.out.println(prodName1+"\t"+prodPrice1+"\t"+prodNum1+"\t"+prodTotal1); System.out.println(prodName2+"\t"+prodPrice2+"\t"+prodNum2+"\t"+prodTotal2); System.out.println("一共消费:"+prodSum); System.out.println("本次积分:"+score); System.out.println("实际缴费"); pay = input.nextInt(); check = pay - prodSum; System.out.println("找零为:"+check); System.out.println("程序结束");
}
}
运行截图: