Java SE 第三章 选择语句

xiaoxiao2021-04-17  117

第三章 选择语句 3.1 比较运算符 ※ 大于 > ※ 大于等于 >= ※ 小于 < ※ 小于等于 <= ※ 等于 == ※ 不等于 != 3.2 逻辑运算符 ※ 单与 & 有false则false。 ※ 双与 && 有false则false。&&具有短路效果。左边是false,右边不执行。 ※ 或 | 有true则true。 ※ 双或 || ||和|都是表示“或”,区别是||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断。 ※ 非 ! 非false则true,非true则false。 ※ 异或 ^ 相同为false,不同为true。 3.3 if语句 ※ 单if if-else分支

※ 多if-else分支

※ 多if-else嵌套

示例:计算身体质量指数

import java.util.Scanner; public class Test1 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //1.获取身高和体重 System.out.print("Please enter your weight and hight:"); double weight=scanner.nextDouble(); double hight=scanner.nextDouble(); //2.BMI=体重/身高^2 double BMI=weight/hight/hight; //3.将BMI进行判断,输出相应的说明 if(BMI>=30.0){ System.out.println("过胖"); }else if(BMI>=25.0){ System.out.println("超重"); }else if(BMI>=18.5){ System.out.println("正常"); }else{ System.out.println("偏瘦"); } } }

示例:判断闰年

import java.util.Scanner; public class Test2 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //1.获取用户输入的年份 System.out.print("Enter the year:"); int year=scanner.nextInt(); //2.将年份进行判断 year%4==0&&year0!=0 || year@0==0 if( year%4==0&&year0!=0 || year@0==0){ System.out.println(year+"是闰年"); }else{ System.out.println(year+"是平年"); } } }

示例:彩票

import java.util.Scanner; public class Test3 { public static void main(String[] args) { int randomNumber=(int) (Math.random()*100); System.out.println("程序产生:"+randomNumber); Scanner scanner=new Scanner(System.in); //1.用户输入一个数字(要么一位数,要么两位数) System.out.print("输入一个数字n,n∈[0,100):"); int number=scanner.nextInt(); //2.程序中随机产生一个数字(要么一位数,要么两位数) //Math.random()生成一个0~1之间的任意小数[0,1) //[0,1) [0,10) [0,100) //假设17 a=7 b=1 29 a=9 b=2 int a1=number;//7 number/=10;//1 int b1=number;//1 int a2=randomNumber;//9 randomNumber/=10;//2 int b2=randomNumber;//2 //一等奖 a1=a2 && b1==b2 19 19 if(a1==a2&&b1==b2){ System.out.println("一等奖!"); //二等奖 a1==b2 && a2==b1 19 91 }else if(a1==b2&&a2==b1){ System.out.println("二等奖!"); //三等奖 a1==a2||a1==b2||b1==a2||b1==b2 12 24 }else if(a1==a2||a1==b2||b1==a2||b1==b2){ System.out.println("三等奖!"); }else{ System.out.println("谢谢参与!"); } } }

3.4 switch语句 ※ switch

(1) 能用于switch判断的类型有:byte、short、int、char(JDK1.6),还有枚举类型,但是在JDK1.7后添加了对String类型的判断 (2) case语句中少写了break,编译不会报错,但是会一直执行之后所有case条件下的语句而不再判断,直到default语句 (3) 若果没有符合条件的case就执行default下的代码块,default并不是必须的,也可以不写

※ 不带case的switch

3.5 条件表达式 ※ 布尔表达式 布尔表达式(Boolean expression)是一段代码声明,它最终只有true(真)和false(假)两个取值。最简单的布尔表达式是等式(equality),这种布尔表达式用来测试一个值是否与另一个值相同。 3.6 常见错误和陷阱 ※ 忘记必要的括号 ※ 在if行出现错误的分号 ※ 对布尔值的冗余测试 ※ 悬空else出现的歧义 ※ 两个浮点数值的相等测试 ※ 简化布尔变量赋值 ※ 避免不同情形中的重复代码

本章小结

1.boolean 类型变量可以存储值 true 或 false。

2.关系操作符(<、 <= 、 ==、 ! =、 >、 >=) 产生一个布尔值。

3.选择语句用于可选择的动作路径的编程。 选择语句有以下几种类型: 单分支 if 语句、 双分支 ifelse 语句、 嵌套 if 语句、 多分支 if-else 语句、 switch 语句和条件表达式。

4.各种 if 语句都是基于布尔表达式来控制决定的。 根据表达式的值是 true 或 false, 这些语句选择两种 可能路径中的一种。

5.布尔操作符&&、||、!和^对布尔值和布尔变量进行计算。

6.当对 p1&&p2 求值时, Java 先求 p1 的值, 如果 p1为 true, 再对 p2 求值; 如果 p1 为 false, 就 不再对 P2 求值。 当对 p1ll p2 求值时, Java 先求 p1的值, 如果 p1为 false, 再对 p2 求值; 如果 p1为 true, 就不再对 p2 求值。 因此, && 也称为条件与操作符或短路与操作符, 而 || 也称为条件或 操作符或短路或操作符。

7.switch 语句根据 char、 byte,short、 int 或者 String 类型的 switch 表达式来进行控制决定。

8.在 switch 语句中, 关键字 break 是可选的, 但它通常用在每个分支的结尾, 以中止执行 switch语 句的剩余部分。 如果没有出现 break 语句, 则执行接下来的 case 语句。

9.表达式中的操作符按照括号、 操作符优先级以及操作符结合规则所确定的次序进行求值。

10.括号用于强制求值的顺序以任何顺序进行。

11.具有更高级优先权的操作符更早地进行操作。 对于同样优先级的操作符, 它们的结合规则确定操作 的顺序。

12.除开賦值操作符的所有二元操作符都是左结合的, 陚值操作符是右结合的。

编程练习题

import java.util.Scanner; public class test4 { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); System.out.print("请输入二次函数二次项系数a:"); double a=scanner.nextDouble(); System.out.print("请输入二次函数一次项系数b:"); double b=scanner.nextDouble(); System.out.print("请输入二次函数常数项系数c:"); double c=scanner.nextDouble(); double delt=Math.sqrt(b*b-4*a*c); if(delt>0){ System.out.println("二次函数有两个值。"); System.out.println("两个值分别是 "+(-b+delt)/2*a+"和"+(-b-delt)/2*a); }else if(delt==0){ System.out.println("二次函数有一个值。"); System.out.println("值是 "+(-b+delt)/2*a); }else{ System.out.println("二次函数无实数根"); } } }

import java.util.Scanner; public class Demo3_2 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //1.输入系数和常数项 System.out.print("Enter a,b,c,d,e,f:"); double a=scanner.nextDouble(); double b=scanner.nextDouble(); double c=scanner.nextDouble(); double d=scanner.nextDouble(); double e=scanner.nextDouble(); double f=scanner.nextDouble(); //2.判断该方程组是否有解 double delt=a*d-b*c; if(delt!=0){ double x=(e*d-b*f)/delt; double y=(a*f-e*c)/delt; System.out.println("x is "+x+" , and y is "+y); }else{ System.out.println("has no solution"); } } }

import java.util.Scanner; public class Demo3_3 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //1.获取今天的周几 System.out.print("Enter today's day:"); int today=scanner.nextInt(); //2.获取几天后 System.out.print("Enter the number of days elasped since today:"); int since=scanner.nextInt(); switch (today%7) { case 1: System.out.print("Today is Monday "); break; case 2: System.out.print("Today is Tuesday "); break; case 3: System.out.print("Today is Wednesday "); break; case 4: System.out.print("Today is Thursday "); break; case 5: System.out.print("Today is Friday "); break; case 6: System.out.print("Today is Saturday "); break; case 0: System.out.print("Today is Sunday "); break; } //3.输出今天周几 几天后周几 switch((today+since)%7){ case 1: System.out.print("the future day is Monday "); break; case 2: System.out.print("the future day is Tuesday "); break; case 3: System.out.print("the future day is Wednesday "); break; case 4: System.out.print("the future day is Thursday "); break; case 5: System.out.print("the future day is Friday "); break; case 6: System.out.print("the future day is Saturday "); break; case 0: System.out.print("the future day is Sunday "); break; } } }

import java.util.Scanner; public class Demo3_4 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //1.获取用户输入的前九位编号 System.out.print("Enter the first 9 digits of an ISBN as integer:"); int digit=scanner.nextInt(); int digitOri=digit; //2.将九位编号分别取出 System.out.println(digit); int d9=digit; digit/=10; int d8=digit; digit/=10; int d7=digit; digit/=10; int d6=digit; digit/=10; int d5=digit; digit/=10; int d4=digit; digit/=10; int d3=digit; digit/=10; int d2=digit; digit/=10; int d1=digit; //3.根据取出的前九位数字 计算第十位 int d10=(d1*1+d2*2+d3*3+d4*4+d5*5+d6*6+d7*7+d8*8+d9*9); System.out.println(d10); //4.拼接ISBN 输出 String res=""; if(d1==0){ res+=0;//"0" } if(d10==10){ res=res+digitOri+"X"; // System.out.println(digitOri+"X");//+ 字符串连接符 }else{ res=res+digitOri+d10; } System.out.println(res); } }

import java.util.Scanner; public class Demo3_5 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //1.输入一个三位数字 System.out.print("Enter a number:"); int number=scanner.nextInt(); //2.将三位数进行拆分 int a=number;//123 int b=number/100;// //3.对比个位与百位 if(a==b){ System.out.println("是回文数字"); }else{ System.out.println("不是!"); } } }

import java.util.Scanner; public class Demo3_6 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //1.输入玩家的选择 System.out.print("Enter :"); int p=scanner.nextInt(); //2.随机生成选择 int c=(int) (Math.random()*3);//[0,1)*3 [0,3) System.out.println(c); int result=-1; String cStr="";//出拳信息 String pStr="";//出拳信息 if(p==0){ result=(p+c+3)%3; } if(p==1){ result=(p+c+1)%3; } if(p==2){ result=(p+c+2)%3; } if(p==0){ pStr="scissor"; }else if(p==1){ pStr="rock"; }else{ pStr="paper"; } if(c==0){ cStr="scissor"; }else if(c==1){ cStr="rock"; }else{ cStr="paper"; } System.out.print("The computer is "+cStr+". You are "+pStr+"."); switch (result) { case 0: System.out.println(" too! It is draw."); break; case 1: System.out.println("You lose."); break; case 2: System.out.println("You won."); break; } } } /* * 0 1 2 * 0 1 2 * * P C * 0 0 平0 0+3%3 * 0 1 输1 1+3%3 * 0 2 赢2 2+3%3 * * 1 0 赢2 1+1%3 * 1 1 平0 2+1%3 * 1 2 输1 3+1%3 * * 2 0 输1 2+2%3 * 2 1 赢2 3+2%3 * 2 2 平0 4+2%3 * */

import java.util.Scanner; public class Test3_7 { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); System.out.print("请输入三角形第一条边的长度:"); int side1=scanner.nextInt(); System.out.print("请输入三角形第二条边的长度:"); int side2=scanner.nextInt(); System.out.print("请输入三角形第三条边的长度:"); int side3=scanner.nextInt(); if(side1+side2>side3&&side1+side3>side2&&side2+side3>side1){ System.out.print("三角形的周长为:"+(side1+side2+side3)); }else{ System.out.print("这三条边不能构成一个三角形!"); } } }

import java.util.Scanner; public class Demo3_8 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //1.获取 年份 月 日 System.out.print("Enter year:"); int year=scanner.nextInt(); System.out.print("Enter month:"); int month=scanner.nextInt(); System.out.print("Enter the day of the month:"); int day=scanner.nextInt(); //隐含计算 j 世纪数 k该世纪的第几年 if(month==1||month==2){ month+=12; year--; } int j=year/100; int k=year0; int h=(day+26*(month+1)/10+k+k/4+j/4+5*j)%7; System.out.println(h); } }

public class Demo3_9 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //1.获取坐标点 x y System.out.print("Enter a point with two coordinates:"); double x=scanner.nextDouble(); double y=scanner.nextDouble(); //2.求坐标点到圆心的距离 double deltX=x-0; double deltY=y-0; double distance=Math.sqrt(deltX*deltX+deltY*deltY); //3.将距离和半径进行个比较 if(distance>10){ System.out.println("Point("+x+","+y+") is not in the circle."); }else{ System.out.println("Point("+x+","+y+") is in the circle."); } } }

import java.util.Scanner; public class Demo3_10 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //1.输入坐标点 System.out.print("Enter a point:"); double x=Math.abs(scanner.nextDouble()); double y=Math.abs(scanner.nextDouble()); //2.判断该坐标点x的量和y的量 if(x>5||y>2.5){ System.out.println("矩形外"); }else{ System.out.println("矩形内"); } } }

public class Demo3_11 { public static void main(String[] args) { //1.从[1,13]之间随机数点数 int rank=(int) (1+Math.random()*13); //2.从[1,4]之间随机数花色 int suit=(int) (1+Math.random()*4); switch(rank){ case 1: System.out.println("你所选的牌是 A"); break; case 2: System.out.println("你所选的牌是 2"); break; case 3: System.out.println("你所选的牌是 3"); break; case 4: System.out.println("你所选的牌是 4"); break; case 5: System.out.println("你所选的牌是 5"); break; case 6: System.out.println("你所选的牌是 6"); break; case 7: System.out.println("你所选的牌是 7"); break; case 8: System.out.println("你所选的牌是 8"); break; case 9: System.out.println("你所选的牌是 9"); break; case 10: System.out.println("你所选的牌是 10"); break; case 11: System.out.println("你所选的牌是 J"); break; case 12: System.out.println("你所选的牌是 Q"); break; case 13: System.out.println("你所选的牌是 K"); break; } switch(suit){ case 1: System.out.println("牌色是 黒梅花"); break; case 2: System.out.println("牌色是 红方片"); break; case 3: System.out.println("牌色是 红心"); break; case 4: System.out.println("牌色是 黑桃"); break; } } }

import java.util.Scanner; public class Demo3_12 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //1.输入四个坐标点 System.out.print("Enter 4 points:"); double x1=scanner.nextDouble(); double y1=scanner.nextDouble(); double x2=scanner.nextDouble(); double y2=scanner.nextDouble(); double x3=scanner.nextDouble(); double y3=scanner.nextDouble(); double x4=scanner.nextDouble(); double y4=scanner.nextDouble(); //2.结合方程组 计算方程组中的系数和常数项 double a=y1-y2; double b=-(x1-x2); double c=y3-y4; double d=-(x3-x4); double e=(y1-y2)*x1-(x1-x2)*y1; double f=(y3-y4)*x3-(x3-x4)*y3; //3.判断方程组是否有解 double delt=a*d-b*c; if(delt==0){ System.out.println("The two line are parallel"); }else{ double x=(e*d-b*f)/delt; double y=(a*f-e*c)/delt; System.out.println("x="+x+",y="+y); } } }

import java.util.Scanner; public class Demo3_13 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.print("Enter x,y:"); double x=scanner.nextDouble(); double y=scanner.nextDouble(); if(x>=0&&x<=200){ if((200-x)/y>=2){ System.out.println("int"); return;//直接结束函数 谨慎使用 } } System.out.println("out"); } }

import java.util.Scanner; public class Demo3_14 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //1.输入两个矩形的宽高和中心坐标 System.out.print("Enter r1:"); double xo=scanner.nextDouble(); double yo=scanner.nextDouble(); double W=scanner.nextDouble(); double H=scanner.nextDouble(); System.out.print("Enter r2:"); double x=scanner.nextDouble(); double y=scanner.nextDouble(); double w=scanner.nextDouble(); double h=scanner.nextDouble(); //2.计算是否r2在r1内 if(x<=(W/2-w/2+xo)&&x>=(xo-W/2+w/2)&&y<=(H/2-h/2+yo)&&y>=(yo-H/2+h/2)){ System.out.println("r2 in r1"); //计算是否r2在r1外 }else if(x>=(W/2+w/2+xo)||x<=(xo-W/2-w/2)||y>=(H/2+h/2+yo)||y<=(yo-H/2-h/2)){ System.out.println("r2 out r1"); }else{ System.out.println("r2 overlaps r1"); } } }

import java.util.Scanner; public class Demo3_15 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //1.输入两个圆的信息 圆心坐标 半径 System.out.print("Enter circle1:"); double x1=scanner.nextDouble(); double y1=scanner.nextDouble(); double r1=scanner.nextDouble(); System.out.print("Enter circle2:"); double x2=scanner.nextDouble(); double y2=scanner.nextDouble(); double r2=scanner.nextDouble(); //2.计算两圆心之间的距离 double distance=Math.sqrt(Math.pow(x1-x2, 2)+Math.pow(y1-y2, 2)); //3.判断距离所表示的两圆之间的关系 if(distance<=Math.abs(r1-r2)){ System.out.println("c2 in c1"); }else if(distance>=r1+r2){ System.out.println("c2 out c1"); }else{ System.out.println("c2 overlaps c1"); } } }

import java.util.Scanner; public class Demo3_16 { public static void main(String[] args) { //1.输入三个点的坐标 p0 p1 p2 Scanner scanner=new Scanner(System.in); System.out.print("Enter p0,p1,p2:"); double x0=scanner.nextDouble(); double y0=scanner.nextDouble(); double x1=scanner.nextDouble(); double y1=scanner.nextDouble(); double x2=scanner.nextDouble(); double y2=scanner.nextDouble(); //计算结果 double res=(x1-x0)*(y2-y0)-(x2-x0)*(y1-y0); if(res>0){ System.out.println("p2 left to line"); }else if(res==0){ System.out.println("p2 on the line"); }else{ System.out.println("p2 right to line"); } } }
转载请注明原文地址: https://www.6miu.com/read-4819666.html

最新回复(0)