Boolean数据类型
要点提示:Boolean数据类型声明一个具有值true或者false的变量。
Java提供六种关系操作符(比较操作符),用于两个值得比较。
警告:相等的关系操作符是两个等号(==),而不是一个等号(=),后者是赋值操作符。
if语句
要点提示:if语句是一个结构,允许程序确定执行的路径。
单分支if语句是指当且仅当条件为true时执行一个动作。单分支if语句的语法如下:
if(布尔表达式){
语句(组);
}
if语句执行的流程图为:
注意:省略括号可以让代码更加简短,但是容易产生错误。当你返回去修改略去的代码时候,容易忘记加上括号。
双分支if-else语句
要点提示:if-else语句根据条件是真或者是假,决定执行的路径。
双分支if-else语句的语法:
if(布尔表达式){
布尔表达式为真时执行的语句(组);
}
else{
布尔表达式为假时执行的语句(组);
}
语句的流程图为:
常见的错误和陷阱
要点提示:忘记必要的括号,在错误的地方结束if语句,将==错用为=使用,悬空else分支,是选择语句的常见错误。if-else语句中重复的语句,以及测试双精度值相等是常见的陷阱。
常见错误有:
(1)忘记必要的括号
(2)在if行出现错误的分号
(3)对布尔值的冗余错误
(4)悬空else出现的歧义
(5)两个浮点数值的相等测试
常见的陷阱:
(1)简化布尔变量赋值
(2)避免不同情形中的重复代码
逻辑运算符
逻辑运算符!、&&、||和^可以用于产生复合布尔表达式。
switch语句
要点提示:switch语句基于变量或者表达式的值来执行语句。
Switch语句的完整语法是:
switch语句遵循的规则:
(1)switch表达式必须能计算出一个char、byte、short、int或者string类型值,必须总是用括号括住。
(2)关键字break是可选的。break语句会立即终止switch语句。
警告:不要忘记在需要的时候使用break语句。一旦匹配其中一个case,就从匹配的case处开始执行,直到遇到break语句或到达switch语句的的结束。
条件表达式
要点提示:条件表达式基于一个条件计算表达式的值。
产生随机数:Math.random()来获得一个0.0到1.0之间的随机double值,不包括1.0。
编程例题
1.根据判别式判断一元二次方程有几个实根
import java.util.Scanner;
public class Day3_1 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//提醒用户输入三个数字
System.out.print("请输入a b c的值");
double a=scanner.nextDouble();
double b=scanner.nextDouble();
double c=scanner.nextDouble();
//先求出b^2-4ac的值
double m=b*b-4*a*c;
//判断b^2-4ac
if(m>0){
double r1=(-b+Math.sqrt(m))/2*a;
double r2=(-b-Math.sqrt(m))/2*a;
System.out.print("函数有两个实根"+r1+r2);
}else if(m==0){
double r1=-b/2*a;
System.out.print("函数有一个实根"+r1);
}else{
System.out.print("函数没有实根");
}
}
}
2.解线性方程,输入六个数,计算x=(ed-bf)/(ad-bc).y=(af-ec)/(ad-bc)
import java.util.Scanner;
public class Day3_2 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//提醒用户输入六个数字
System.out.println("输入六个值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();
//先求出分母的值
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.print("x="+x);
System.out.print("y="+y);
}else{
System.out.print("方程无解");
}
}
}
3.输入两个圆的中心坐标和各自的半径,判断第二个是否在第一个内,还是与第一个重叠。
package day2;
import java.util.Scanner;
public class Day3_15 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("Enter circle1's center x-,y-coordinates,and raudius:");
double x1=scanner.nextDouble();
double y1=scanner.nextDouble();
double r1=scanner.nextDouble();
System.out.print("Enter circle2's center x-,y-coordinates,and raudius:");
double x2=scanner.nextDouble();
double y2=scanner.nextDouble();
double r2=scanner.nextDouble();
double distance=Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2));
if(distance<=(Math.abs(r1-r2))){
System.out.print("circle2 is inside circle1");}
else if(distance>=r1+r2){System.out.print("circle2 does not overlap circle1");
}
else{System.out.print("circle2 overlaps circle1");
}
}
}