目录
1、条件运算符
(三目运算符/三元运算符)
(1)语法结构:
条件?表达式1:表达式2;
执行规律:
条件为true,执行表达式1
条件为false,执行表达式2
(2)条件运算符的嵌套:
语法结构:
条件?(条件?表达式1:表达式2):(条件?表达式1:表达式2);
2、运算符的优先级
单目运算符包括! ++ --,优先级别高
优先级别最低的是赋值运算符
可以通过()控制表达式的运算顺序,()优先级最高
从右向左结合性的只有赋值运算符、三目运算符和单目运算符
算术运算符 > 关系运算符 > 逻辑运算符
3、条件运算符练习
练习1:
public class Demo01 {
public static void main(String[] args) {
// 使用条件运算符获得两个数中的最大值
int num1 = 100;
int num2 = 101;
int max =num1>num2?num1:num2;
System.out.println("最大值:"+max);
//使用键盘录入两个整数,然后通过条件运算符进行比较,输出输入的两个值里面的最小值
//创建Scanner类对象
Scanner input =new Scanner(System.in);
System.out.println("请输入第一个整数:");
int firstNum=input.nextInt();
System.out.println("请输入第二个整数:");
int secondNum=input.nextInt();
int min =firstNum>secondNum?secondNum:firstNum;
System.out.println("你输入的两个数中最小的数是:"+min);
}
}
练习二:根据分解后的数字之和,判断用户是否中奖。如果数字之和大于20,则中奖
public class Demo02 {
public static void main(String[] args) {
// 根据分解后的数字之和,判断用户是否中奖。
// 如果数字之和大于20,则中奖
Scanner input = new Scanner(System.in);
System.out.println("请输入4位会员卡号:");
int cardId = input.nextInt();
System.out.println("你的会员卡号是:" + cardId);
int geWei = cardId % 10;
int shiWei = cardId / 10 % 10;
int baiWei = cardId / 100 % 10;
int qianWei = cardId / 1000;
System.out.println("千位:" + qianWei + ",百位:" + baiWei + ",十位:" + shiWei
+ ",个位:" + geWei);
int sum = geWei + shiWei + baiWei + qianWei;
System.out.println("各个位数上的数字之和:" + sum);
// 如果数字之和大于20,则中奖
String result = sum > 20 ? "恭喜你,中奖了" : "很遗憾,没能中奖";
System.out.println(result);
}
}
4、选择结构
if选择分支结构
switch分支结构
5、if选择分支结构
(1)单分支if选择结构:
语法结构:
if(条件){
//代码块
}
执行规律:
如果条件为true,执行{}中的代码块,执行完后,继续往下执行{}后面的代码;
如果条件为false,执行{}后面的代码;
注意:条件不管多么简单还是多么复杂,都只能为布尔值
(2)双分支if选择结构:if-else选择结构
语法结构:
if(条件){
//代码块1;
}else{
//代码块2;
}
执行规律:
如果条件为true,执行代码块1,执行完之后,执行if-else结构后面的代码
如果条件为false,执行else{}里面的代码块2,执行完之后,执行if-else结构后面的代码
注意:条件为布尔值;
如果代码块1只有一条语句,代码块1所在的{}可以省略,但不建议。
(3)多重if选择结构:if-else-if选择结构
语法结构:
if(条件1){
//代码块1
}else if(条件2){
//代码块2
}else if(条件3){
//代码块3
}....
}else{
//代码块n
}
执行规律:
- 先判断条件1,如果条件1为true,执行代码块1,执行完之后结束整个if-else-if结构,执行该结构后面的代码
- 如果条件1为false,继续往下判断条件2,如果条件2为true, 执行代码块2,执行完之后结束整个if-else-if结构,执行该结构后面的代码
- 如果条件2为false,继续往下判断条件3,如果条件3为true,执行代码块3,执行完之后结束整个if-else-if结构,执行该结构后面的代码
- ......
- 如果所有的条件都为false,执行else里面的代码块n
注意:
1)条件为布尔值
2)else if可以有1个、2个、多个
3)else也可以省略,如果所有的条件不成立,也没有else,那么整个if-else-if结构不执行
4)多重if选择结构中各个条件的顺序不可以任意排列,要求从上往下由严格到宽松。
(4)嵌套if选择结构:在一个if选择结构中存在另外一个if选择结构
语法结构:
if(条件1){
//代码块1
if(条件2){
//代码块2
}else{
//代码块3
}
}else{
//代码块4
}
执行规律:
判断条件1,条件1为true,执行代码块1,进一步判断条件2,条件为true,执行代码块2,条件2为false,执行代码块3,执行完之后,结束整个所有的if结构
条件1为发了,执行下面else里的代码块4
练习1:
public class Demo01 {
public static void main(String[] args) {
//张浩Java成绩大于90分,老师奖励他iPhone6s ,该怎么做呢?
//声明一个变量javaScore用来存储张浩的Java成绩
double javaScore = 9;
//根据张浩的java成绩判断他能不能拿到奖励
if(javaScore>=90){
System.out.println("奖励一部iPhone6S");
}
System.out.println("继续努力");
}
}
练习2:
public class Demo04 {
public static void main(String[] args) {
/*
* 如果张浩Java考试成绩大于等于90分,老师就奖励他一个iPhone6s
* 否则老师就罚他蹲马步
*/
double javaScore = 9;
if(javaScore>=90){
System.out.println("奖励iPhone6s");
}else{
System.out.println("蹲马步");
}
System.out.println("继续努力");
}
}
练习3:
public class Demo05 {
public static void main(String[] args) {
/*
* 对学员的考试成绩评测
* 成绩>=80 :良好
* 成绩>=60 :中等
* 成绩<60 :差
*/
double javaScore = 95;
if(javaScore>=80){
System.out.println("良好");
}else if(javaScore>=60){
System.out.println("中等");
}else{
System.out.println("差");
}
System.out.println("继续努力");
}
}
练习4:
import java.util.Scanner;
public class Demo06 {
public static void main(String[] args) {
/*
* 学校举行运动会,百米赛跑跑入10 秒内的学生有资格进决赛,
* 根据性别分别进入男子组和女子组
*/
//创建Scanner类对象
Scanner input = new Scanner(System.in);
System.out.println("请输入你的百米赛跑成绩:");
double runScore =input.nextDouble();
//根据成绩判断能不能进入决赛
if(runScore<10){
System.out.println("恭喜你,进入百米赛跑决赛");
//根据性别判断进入男子组还是女子组
//获取性别
System.out.println("请输入你的性别:");
String sex =input.next();
//boolean result =sex.equals("男");
//根据性别判断决定进入男子组还是女子组
if(sex.equals("男")){
System.out.println("进入男子组");
}else if(sex.equals("女")){
System.out.println("进入女子组");
}else{
System.out.println("对不起,暂时还没有针对你的性别开展比赛");
}
}else{
System.out.println("很遗憾,不能进入百米赛跑决赛");
}
}
}
注:equals
比较字符串是否相等,返回boolean类型数据
eg:比较字符串1和字符串2
String str = “字符串1”;
boolean result = str.equal(“字符串2”);
6、switch选择结构
(1)语法结构
switch (表达式) {
case 常量 1:
语句;
break;
case 常量 2:
语句;
break;
…
default:
语句;
}
(2)使用说明:
1)根据switch中表达式的值,依次匹配case中的常量,匹配成功,进入相应的case结构中,调用其中的执行语句;当执行完语句后,程序仍然向下执行其他case结构中的执行语句,直到遇到break关键字或者switch-case结构末尾才结束。
2)break关键字可以使用在switch-case结构中,程序执行到该关键字则跳出switch-case结构。
3)switch结构中的表达式只能是下面的六种数据结构之一:
byte、short 、int、枚举类型、String类型
4)case后只能声明常量,不能声明范围。
错误示范:
int age = 10;
switch(age){
case age>18:
System.out.println(“成年了”);
break;
case age<18:
System.out.println(“未成年”);
}
5)break关键字根据实际使用情况来判断是否需要
6)default相当于else,是可选的,位置可以灵活,一般放在末尾
7)如果switch-case结构中的多个case执行语句相同,则可以进行合并。示例:
int score = 78;
switch(score/10){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println(“不及格”);
break;
case 6:
case 7:
case 8:
case 9:
case 10:
System.out.println(“成年了”);
break;
}
8)键盘分别输入年月日,判断这一天是当年第几天
判断一年是否为闰年:可以被4整除,不能被100整除;可以被400整除
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println(“请输入year:”);
int year = scan.nextInt();
System.out.println(“请输入month:”);
int month = scan.nextInt();
System.out.println(“请输入day:”);
int day = scan.nextInt();
int sumDay = 0;
switch(month){
case12:sumDay+=31;
case11:sumDay+=30;
case10:sumDay+=31;
case9:sumDay+=30;
case8:sumDay+=31;
case7:sumDay+=31;
case6:sumDay+=30;
case5:sumDay+=30;
case4:sumDay+=30;
case3:sumDay+=31;
case2:
if(year%4==0&&year%100!=0||year%400==0){
sumDay+=29;
}else{
sumDay+=28;
}
case1:sumDay+=day;
}
System.out.println(month+”月”+day+”日”+”是该年的第”+sumDay+”天”);
}
9)switch-case结构和if-else结构选择判断
a.凡是可以使用switch-case结构都能转换为if-else结构,反之不成立
b.当两种分支结构都能使用时,如果switch-case中case取值情况不多,有限选择switch-case结构,switch-case结构执行效率较高。
7、练习
01: 使用if选择结构判断一个整数,属于哪个范围:大于0;小于0;等于0
import java.util.Scanner;
public class exe01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = sc.nextInt();
if(num>0){
System.out.println("大于0");
}
else if(num==0){
System.out.println("等于0");
}
else{
System.out.println("小于0");
}
}
}
02:使用if选择结构判断一个整数是偶数还是奇数。
import java.util.Scanner;
public class exe2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = sc.nextInt();
if(num>=0){
if(num/2==0){
System.out.println("该数是偶数");
}else{
System.out.println("该数是奇数");
}
}else{
System.out.println("负数没有奇偶性");
}
}
}
03:使用if选择结构对三个整数进行排序,输出时按照从小到大的顺序输出。
import java.util.Scanner;
public class exe3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int num1 = sc.nextInt();
System.out.println("请输入第二个整数:");
int num2 = sc.nextInt();
System.out.println("请输入第三个整数:");
int num3 = sc.nextInt();
//num1最大
if(num1>num2&&num1>num3&&num2>num3){
System.out.println("num1>num2>num3");
}
else if(num1>num2&&num1>num3&&num3>num2){
System.out.println("num1>num3>num2");
}
//num2最大
else if(num2>num1&&num2>num3&&num1>num3){
System.out.println("num2>num1>num3");
}
else if(num2>num1&&num2>num3&&num3>num1){
System.out.println("num2>num3>num1");
}
//num3最大
else if(num3>num1&&num3>num2&&num1>num2){
System.out.println("num3>num1>num2");
}
else if(num3>num1&&num3>num2&&num2>num1){
System.out.println("num3>num2>num1");
}
}
}
04:使用if选择结构判断一个三位的整数是否是水仙花数。
水仙花数的条件:三位数为abc,则满足:a3+b3+c3=abc
import java.util.Scanner;
public class exe4 {
public static void main(String[] args) {
//创建Scanner对象
Scanner sc = new Scanner(System.in);
System.out.println("输入一个三位数");
//键盘获取数据
int num = sc.nextInt();
//判断是否为四位数
if(num<100||num>999)
System.out.println("请输入三位数");
else
System.out.println("输入的三位数是:"+num);
int a = num%10;
System.out.println("个位数是:"+a);
int b = num/10%10;
System.out.println("个位数是:"+b);
int c = num/100;
System.out.println("个位数是:"+c);
if(a*a*a+b*b*b+c*c*c==a*b*c){
System.out.println(num+"是水仙数");
}else{
System.out.println(num+"不是水仙数");
}
}
05:使用if选择结构判断某一年份是否是闰年。
闰年的条件:
普通闰年:能被4整除但不能被100整除的年份为普通闰年。(如2004年就是闰年);
世纪闰年:能被400整除的为世纪闰年。(如2000年是世纪闰年);
import java.util.Scanner;
public class exe5 {
public static void main(String[] args) {
//创建Scanner对象
Scanner sc = new Scanner(System.in);
System.out.println("输入年份:");
//键盘获取数据
int nian = sc.nextInt();
if(nian%4==0){
if(nian%100!=0){
System.out.println(nian+"是普通闰年");
}else{
System.out.println(nian+"是世纪闰年");
}
}else{
System.out.println(nian+"不是闰年");
}
}
}
06:使用if选择结构判断一个4位整数,统计出此整数里面包含多少个偶数,多少个奇数
import java.util.Scanner;
public class exe6 {
public static void main(String[] args) {
//创建Scanner对象
Scanner sc = new Scanner(System.in);
System.out.println("输入四位数");
//键盘获取数据
int num = sc.nextInt();
//判断是否为四位数
if(num<1000||num>9999){
System.out.println("请输入四位数");
}
else{
System.out.println("四位数是:"+num);
}
int ouNum;
int jiNum;
//num 为偶数时,奇数个数为num/2;偶数个数为(num/2)+1
if(num%2==0){
ouNum = num/2+1;
System.out.println("偶数个数为"+ouNum);
jiNum = num/2;
System.out.println("奇数个数为"+jiNum);
}
//num 为奇数时,奇数偶数个数均为(num+1)/2
else{
ouNum = (num+1)/2;
System.out.println("偶数个数为"+ouNum);
jiNum =(num+1)/2;
System.out.println("奇数个数为"+jiNum);
}
}
}
07:开发一个程序,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者体重是否合适。
import java.util.Scanner;
public class exe7 {
public static void main(String[] args) {
//创建Scanner对象
Scanner sc = new Scanner(System.in);
System.out.println("输入身高:");
double height = sc.nextDouble();
System.out.println("输入体重:");
double weight1 = sc.nextDouble();
System.out.println("身高为:"+height+" 实际体重为:"+weight1);
double weight2 = (height-108)*2;
System.out.println("标准体重为:"+weight2);
if(weight1>=weight2-10&&weight1<=weight2+10){
System.out.println("体重合适");
}else{
System.out.println("体重不合适");
}
}
}
08: 判断此考试成绩为什么等级。
90-100之间为优秀
80-89之间为优良
70-79之间为良好,
60-69之间为及格
60分以下为不及格。
import java.util.Scanner;
public class exe8 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入分数:");
int score = sc.nextInt();
if(score>=90){
System.out.println("优秀");
}
else if(score>=80&&score<90){
System.out.println("优良");
}
else if(score>=70&&score<80){
System.out.println("良好");
}
else if(score>=60&&score<70){
System.out.println("及格");
}
else{
System.out.println("不及格");
}
}
}
09: 写一个程序,输出类似09:03:12的时间格式,需要判断输入的数字是否符合实际情况,比如小时数就不能大于24,如果大于24就提示输入错误;分钟数和秒数不能大于60,如果大于60就提示输入错误。
import java.util.Scanner;
public class exe9 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入小时:");
int hour = sc.nextInt();
System.out.println("请输入分钟:");
int minute = sc.nextInt();
System.out.println("请输入秒:");
int second = sc.nextInt();
if(hour>=24|minute>=60|second>=60){
System.out.println("输入错误!");
}
else if(hour>=10){
if(minute>=10){
if(second>=10){//hour>=10,minute>=10,second>=10
System.out.println(hour+":"+minute+":"+second);
}else{//hour>=10,minute>=10,second<10
System.out.println(hour+":"+minute+":0"+second);
}
}else{//minute<10
if(second>=10){//hour>=10,minute<10,second>=10
System.out.println(hour+":0"+minute+":"+second);
}else{//hour>=10,minute<10,second<10
System.out.println(hour+":0"+minute+":0"+second);
}
}
}else{//hour<10
if(minute>=10){
if(second>=10){//hour<10,minute>=10,second>=10
System.out.println("0"+hour+":"+minute+":"+second);
}else{//hour<10,minute>=10,second<10
System.out.println("0"+hour+":"+minute+":0"+second);
}
}else{
if(second>=10){//hour<10,minute<10,second>=10
System.out.println("0"+hour+":0"+minute+":"+second);
}else{//hour<10,minute<10,second<10
System.out.println("0"+hour+":0"+minute+":0"+second);
}
}
10: 有3个整数,给出提示信息:
能否创建三角形;
如果能构建三角形,提示是直角三角形还是等边三角形等腰三角形还是普通三角形;
最后输出三角形面积;
import java.util.Scanner;
public class exe10 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输第一条边:");
int first = sc.nextInt();
System.out.println("请输第二条边:");
int second = sc.nextInt();
System.out.println("请输第三条边:");
int third = sc.nextInt();
//判断能否形成三角形
if(first+second>third|first+third>second|second+third>first){
System.out.println("可以形成三角形");
//判断是否等腰
if(first==second|first==third|second==third){
if(first==second&&first==third){
System.out.println("等边三角形");
}else if(first*first+second*second==third*third|first*first==second*second+third*third|second*second==third*third+first*first){
System.out.println("等腰直角三角形");
}else{
System.out.println("等腰三角形");
}
}else if(first*first+second*second==third*third|first*first==second*second+third*third|second*second==third*third+first*first){
System.out.println("直角三角形");
}else{
System.out.println("普通三角形");
}
}else{
System.out.println("不可以形成三角形");
}
}
}
11:随机输入一个字母,如果是大写字母就转化为小写字母输出;如果是小写字母就转化为大写字母输出。
import java.util.Scanner;
public class exe11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字母");
char ch = sc.next().charAt(0);
if(ch <='Z'&& ch >= 'A'){
ch = (char) (ch + 32);
System.out.print("小写字母:" + ch);
}else if(ch>='a'&&ch<='z'){
ch = (char) (ch - 32);
System.out.print("大写字母:" + ch);
}
}
}
12:使用if结构实现学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
import java.util.Scanner;
public class exe12 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入分数:");
double scord = sc.nextDouble();
if(scord>=90){
System.out.println("该同学的成绩为:A");
}else if(scord>=60&&scord<90){
System.out.println("该同学的成绩为:B");
}else{
System.out.println("该同学的成绩为:C");
}
}
}
13:使用条件结构实现:岳灵珊同学参加到Java的学习,他父亲岳不群和母亲宁中则承诺:
如果岳灵珊的考试成绩==1OO分,父亲给她买辆车
如果岳灵珊的考试成绩>=90分,母亲给她买台笔记本电脑
如果岳灵珊的考试成绩>=60分,母亲给她买部手机
如果岳灵珊的考试成绩<60分,没有礼物
import java.util.Scanner;
public class exe13 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入分数:");
double scord = sc.nextDouble();
if(scord==100){
System.out.println("父亲给她买辆车");
}
else if(scord>=90){
System.out.println("母亲给她买台笔记本电脑");
}
else if(scord>=60){
System.out.println("母亲给她买部手机");
}else{
System.out.println("没有礼物");
}
}
}
14:使用条件结构实现,如果用户名等于字符‘青’,密码等于数字‘123’,就输出“欢迎你,青”,否则就输出“对不起,你不是青”。
import java.util.Scanner;
public class exe14 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String user = sc.next();
System.out.println("请输入密码:");
int password = sc.nextInt();
if(user.equals("青")&&password==123){
System.out.println("欢迎你,青");
}else{
System.out.println("对不起,你不是青");
}
}
}
15:求ax2+bx+c=0方程的根。
a,b,c分别为函数的参数,
如果:b2-4ac>0,则有两个解;b2-4ac=0,则有一个解;b2-4ac<0,则无解;
已知:
x1=(-b+sqrt(b2-4ac))/2a
x2=(-b-sqrt(b2-4ac))/2a
import java.util.*;
public class exe15 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
System.out.println("请分别输入三个参数:");
double a = sc.nextDouble();
double b = sc.nextDouble();
double c = sc.nextDouble();
System.out.println("三个参数分别为:");
System.out.println("a:"+a+",b:"+b+",c:"+c);
double x1;
double x2;
if(b*b-4*a*c>0){
System.out.println("方程有两个解:");
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
System.out.println("x1="+x1+",x2="+x2);
}
else if(b*b-4*a*c==0){
System.out.println("方程有一个解:");
x1=x2=(-b+sqrt(b*b-4*a*c))/(2*a);
System.out.println("x1=x2="+x1);
}else{
System.out.println("无解");
}
}
private static double sqrt(double d) {
// TODO Auto-generated method stub
return 0;
}
}
16:使用switch选择结构实现判断某年某月某日是这一年的第几天?
import java.util.Scanner;
public class exe16 {
public static void main(String[] args) {
//使用switch选择结构实现判断某年某月某日是这一年的第几天?
Scanner scan = new Scanner(System.in);
System.out.println("请输入year:");
int year = scan.nextInt();
System.out.println("请输入month:");
int month = scan.nextInt();
System.out.println("请输入day:");
int day = scan.nextInt();
int sumDay = 0;
switch(month){
case 12:sumDay+=31;
case 11:sumDay+=30;
case 10:sumDay+=31;
case 9:sumDay+=30;
case 8:sumDay+=31;
case 7:sumDay+=31;
case 6:sumDay+=30;
case 5:sumDay+=30;
case 4:sumDay+=30;
case 3:sumDay+=31;
case 2:
if(year%4==0&&year%100!=0||year%400==0){
sumDay+=29;
}else{
sumDay+=28;
}
case 1:sumDay+=day;
}
System.out.println(month+"月"+day+"日"+"是该年的第"+sumDay+"天");
}
}
17:使用switch选择结构判断一个月份属于一年中的那个季节。(春夏秋冬)
import java.util.Scanner;
public class exe17 {
public static void main(String[] args) {
// 使用switch选择结构判断一个月份属于一年中的那个季节。(春夏秋冬)
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份:");
int month = sc.nextInt();
switch(month){
case 1:
case 2:
case 3:
System.out.println("春");
break;
case 4:
case 5:
case 6:
System.out.println("夏");
break;
case 7:
case 8:
case 9:
System.out.println("秋");
break;
case 10:
case 11:
case 12:
System.out.println("冬");
}
}
}