if(布尔表达式){
语句体
}
执行流程:
先判断布尔表达式的真假,真就执行语句体;假就不执行语句体。
流程图如下:
if(布尔表达式1){
语句体1
}else {
语句体2
}
执行流程:
判断布尔表达式的真假
真:执行语句体1
假:执行语句体2
流程图如下:
if(不二表达式1){
语句体1
}else if (布尔表达式2){
语句体2
}
。。。
else (
语句体n+1
)
执行流程:
判断布尔表达式1的真假
真:执行语句体1
假: 判断布尔表达式2的真假
真:执行语句体2
假:以此类推
。。。
假:执行语句体n+1
流程图如下:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
。。。
default:
语句体n+1;
break;
}
执行流程:
首先计算表达式的值
然后和case的值 进行依次的比较,一旦有了对象的值,就执行对应的语句,遇到break跳出;
如果都没有与case的值匹配成功,那么就与default匹配执行语句体。
程序流程图如下:
if 语句的使用场景:
switch语句的使用场景:
如果块中只有一条语句,就可以忽略花括号。但是,当需要用花括号将多条语句括在一起时,忘记花括号是一个常见的程序错误。
if (radius>= 0) { area = radius * radius * PI; System.out.println("The area "+"is"+area); }
浮点数具有有限的计算精度;涉及浮点数的计算可能引入舍人错误。因此,两个浮点数值的相等并不可靠。
import java.util.Scanner;
class Demo3_5{
/*
数据:输入一个三位数的整数
指令:1 获取随机的三位数
2 输入一个整数
3 拆分随机三位数上各个位置的值 a1 b1 c1
4 拆分输入的三位数上各个位置上的值 a2 b2 c2
5 拿各个位置上的数进行匹配
*/
public static void main(String[] args){
int comNum=(int)(Math.random()*1000);
System.out.print(comNum);
Scanner scanner=new Scanner(System.in);
System.out.println("输入一个三位整数");
int usrNum=scanner.nextInt();
int a1=comNum%10;
comNum/=10;
int b1=comNum%10;
comNum/=10;
int c1=comNum;
int a2=usrNum%10;
usrNum/=10;
int b2=usrNum%10;
usrNum/=10;
int c2=usrNum;
if(a1==a2&&b1==b2&&c1==c2){
System.out.print("奖金是10000美元");
}else if((a1==b2&&b1==c2&&c1==a2)||(a1==c2&&b1==a2&&c1==b2)){
System.out.print("奖金是3000美元");
}else if(a1==a2||a1==b2||a1==c2||b1==a2||b1==b2||b1==c2||c1==a2||c1==b2||c1==c2){
System.out.print("奖金是1000元");
}else{
System.out.print("没有中奖");
}
}
}
import java.util.Scanner;
class Demo3_7{
/*
数据:一个圆心的坐标 和半径 和另外一个坐标
指令: 1 输入圆心的坐标和半径
2 输入另外一个坐标
3 计算圆心到另外一个坐标的距离
4 判断半径与距离
4.1 半斤》距离 则在园内
4.2 半径《距离 则在园外
*/
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("输入一个圆的圆心和半径:");
System.out.print("Enter a point with two coordinates:");
double ox=scanner.nextDouble();
double oy=scanner.nextDouble();
double radius=scanner.nextDouble();
double x=scanner.nextDouble();
double y=scanner.nextDouble();
double distances=Math.sqrt(Math.pow(ox-x,2)+Math.pow(oy-y,2));
if(distances>radius){
System.out.printf("Point (%f,%f) is not in the circle",x,y);
}else{
System.out.printf("point (%f,%f) is in the circle",x,y);
}
}
}
import java.util.Scanner;
class Demo3_11{
/*
数据:圆心 和两个圆的半径 两个圆心之间的距离
指令:
1.输入两个圆的圆心和半径(默认圆2小于圆1)
2.计算两个圆心之间的距离
3.判断圆心与半径之间的关系
3.1 如果距离>r1+r2 圆2在圆1外
3.2 如果距离<=r1-r2 圆2在圆1内
3.3 其他 圆2与圆1相交
*/
public static void main(String[] args){
// 1
Scanner scanner=new Scanner(System.in);
System.out.print("Enter circle1's center and radius:");
double x1=scanner.nextDouble();
double y1=scanner.nextDouble();
double r1=scanner.nextDouble();
System.out.print("Enter circle1's center and radius:");
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>r1+r2){
System.out.println("circle2 is out of circle1");
}else if(distance<=r1-r2){
System.out.println("circle2 is in the circle1");
}else{
System.out.println("circle2 is overlaps circle1");
}
}
}
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环;
循环四要素:
for循环语句格式:
for(初始化语句;继续条件;步长){
循环体
}
操作流程:
先执行循环语句初始化,判断循环继续条件,
true :继续执行 循环体
false:跳出循环
执行步长
流程图如下:
for 循环语句是从关键字 for 开始的,然后是用一对圆柱体括号括住的循环控制结构体。这个结构体也包括初始操作,循环继续条件和每次代后的操作。控制结构体后紧跟着花括号括起来的循环体。初始操作,循环继续条件和每次指代后的操作都要用分号分隔。
while循环语句格式:
while(循环继续条件){
循环体语句
}
或
循环初始化语句
while(循环继续条件){
循环体语句
步长
}
for循环针对一个范围判断进行操作
while循环适合判断次数不明确操作
使用的场景:
使用的作用:
`import java.util.Scanner;
class Demo3_12{
/*
指令:1·遍历输入的所有整数
2·判断num 的正负
2·1 num>0 整数+1 输出
2·2 num<0 负数+1 输出
2·3 num=0 break
3·计算total的值
4·计算平均值
*/
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int positives=0;
int negatives=0;
int sum=0;
System.out.print(“Enter an integer , the input ends if it is o :”);
while (true){
int num=scanner.nextInt();
if (num>0){
positives+=1;
}else if (num<0){
negatives+=1;
}else {
break;
}
sum=sum+num;
}
System.out.printf("The number of positivers is %d \n ",positives);
System.out.printf("The number of negatives is %d \n ",negatives);
double total=(double)(positives+negatives+1);
System.out.printf("The total is %.1f \n ",total);
double avg=(double)(sum/total);
System.out.printf("The average is %.1f \n ",avg);
}
import java.util.Scanner;
class Demo3_14{
/*
指令:1 输入一个整数 num
2 判断num^2>12000
3 输出这个数
循环
初始值 输入的一个整数
可执行变量 true
循环语句 2
步长 num++
*/
public static void main(String[] args){
int num=0;
while (true){
if (num*num>12000){
break;
}
num++;
}
System.out.print(num);
num=0;
while (true){
if (num*num*num>12000){
break;
}
num++;
}
num--;
System.out.print(num);
}
}
class Demo3_20{
/*
指令:遍历1~1000之间的整数
判断是否为完全数
输出这些数
循环
*/
public static void main(String[] args){
int num1=0;
for (int num=1;num<=10000;num++ ){
for (int i=1;i<=num/2;i++){
if (num%i==0){
num1+=i;
}
}
if (num==num1){
System.out.println(num);
}
num1=0;
}
}
}
import java.util.Scanner;
class Demo3_22{
/*
指令:
输入一些整数
判断最大值max
并记录max出现的次数 count
*/
public static void main(String[] args){
int max=0;
int count=0;
Scanner scanner=new Scanner(System.in);
System.out.print("请输入整数");
while (true){
int num=scanner.nextInt();
if (num==0){
break;
}
if (num>max1){
max=num;
count=1;
}else if (max==num){
count++;
}
}
System.out.println("最大的数字是 :"+max);
System.out.println("出现的次数是:"+count);
}
}