1.if-else条件判断结构
1.1基本结构
/* 分支结构:if-else条件结构判断 1.格式
1: if(条件表达式){
语句块
}
2.格式2:
if(条件表达式){
语句块
}else{
语句块
}
3.格式3:
if(条件表达式){
语句块
}else if(条件表达式){
语句块
}
...
}else if(条件表达式n){
语句块
}else{
语句块
}
*/
1.2基本运用
1.3实际运用
public class if_else { public static void main(String[] args) { /* 案例1:成年人心率的正常范围为每分钟60-100次,体检时, 如果心率不在范围内,则需要进一部的检查。 */ int hert=90; if (hert>=60&&hert<=100){ System.out.println("该成年人心率正常,无需进一步检查"); }else { System.out.println("该成年人心率不正常,需要进一步检查"); } //************************************************************// /* 案例2:定义一个整数,判断为奇数还是偶数 */ int number=100; if (number%2==0){ System.out.println(number+"为偶数"); }else { System.out.println(number+"为奇数"); } //************************************************************// /* 案例3:小柴参加考试,现有如下条件: 如果成绩为100分,奖励一辆跑车, 成绩为(80,99】时,奖励一辆山地自行车, 成绩为【60,80】时,奖励环球影城一日游, 否则,胖揍一顿 */ int grades=10; if (grades==100){ System.out.println("小柴的成绩为:"+grades+",奖励一辆跑车"); } else if (grades>80&&grades<=90) { System.out.println("小柴的成绩为:"+grades+",奖励一辆山地自行车"); } else if (grades>=60&&grades<=80) { System.out.println("小柴的成绩为:"+grades+",奖励环球影城一日游"); }else { System.out.println("小柴的成绩为:"+grades+",胖揍一顿"); } /*如果多个表达式之间没有交集(互斥关系),则哪个条件表达式在上面,哪个在下面都可以。 如果多个表达式之间包含关系,则需要将范围小的条件表达式声明在范围大的条件表达式上面,否则范围小的不会执行。 */ } }
1.4if-else嵌套
import java.util.Scanner; /* if-else嵌套使用 */ public class if_else_plus { public static void main(String[] args) { //案例:由键盘输入三个整数,分别存入num1,num2,num3,对他们进行排序,并且从大到小输出 Scanner sc=new Scanner(System.in); while (true) { System.out.println("输入第一个整数:"); int num1=sc.nextInt(); System.out.println("输入第二个整数:"); int num2=sc.nextInt(); System.out.println("输入第三个整数:"); int num3=sc.nextInt(); contains(num1,num2,num3); } } public static void contains(int num1,int num2,int num3){ if (num1>num2){ if (num2>num3){ System.out.println(num1+">"+num2+">"+num3); }else { if (num3>num1){ System.out.println(num3+">"+num1+">"+num2); }else { System.out.println(num1+">"+num3+">"+num2); } } }else { if (num1>num3){ System.out.println(num2+">"+num1+">"+num3); }else { if (num3>num2){ System.out.println(num3+">"+num2+">"+num1); }else { System.out.println(num2+">"+num3+">"+num1); } } } } }
2.Scanner类,键盘录入
/*
1.使用Scanner类获取不同的类型数据的步骤
步骤1:导包 import Java.util.Scanner;
步骤2:提供(创建)一个Scanner类的实例
步骤3:调用Scanner类中的方法,获取指定类型的变量;
步骤4:关闭资源,调用Scanner类的close();
*/
3.如何获取一个随机数?
/*如何获取一个随机数 ? 1.可以使用Java提供的API:Math类的random(); 2.random()调用后,会随机生成一个【0.0-1.0)之间的double类型的数; 3.如何获取【0,100】的随机数呢? (int)(Math.random()*101) 4.获取一个【a,b】的随机数 (int)(Math.random()*(b-a+1))+a */ public class random { public static void main(String[] args) { int i=(int)(Math.random()*100)+1;//范围是[1,100] int i1=(int)(Math.random()*101);//范围是[0,100] } }
4.switch-case选择结构
4.1基本结构
switch (表达式){ case 常量值1: 语句块; break; case 常量值2: 语句块; break; case 常量值3: 语句块; break; ... default : 语句块; break; }
4.2执行流程图
4.3执行过程
/* switch-case选择结构 1.switch (表达式){ case 常量值1: 语句块; case 常量值2: 语句块; case 常量值3: 语句块; ... default : 语句块; } 2.执行过程: 根据表达式的值,依次匹配case语句,一旦与某个case中的常量值相等,那么就执行此case中的执行语句。 执行完语句后, 情况1:遇到break,则直接跳出switch-case结构 情况2:没有遇到break,则继续执行其后的case中的执行语句,直到遇到break,或执行完所有的 case语句以及default语句。 */
4.3.1说明:
1.switch中的表达式只能是特定的数据类型。如:byte / short / int / char / 枚举(JDK5.0新特性) / String(JDK7.0新特性)
2.每条语句后都要带break,防止case穿透。
3.case后跟的都是常量,不能进行范围判断。
4.switch中通常case的匹配情况都有限。
5.default 是可选的,并且位置是灵活的。
5.循环结构
5.1循环结构分类:
for循环
while循环
do-while循环
5.2循环四要素:
1.初始化条件
2.循环条件
3.循环体
4.迭代部分
5.3for循环
for循环的格式 for(初始化条件;循环条件;迭代部分){ 循环体 }
public class forTest {
public static void main(String[] args) {
//遍历1-100以内的偶数,并且获取偶数的个数和所有偶数的和
contains();
}
public static void contains(){
int sum=0;//记录偶数的个数
int count=0;//记录所有偶数的和
for (int i = 1; i <= 100; i++) {
if (i%2==0){//判断是否为偶数
count++;
sum+=i;
System.out.print(i+", ");
}
}
System.out.println("1-100以内的偶数共有"+count+"个,所有偶数的和为"+sum);
}
}
案例:
import java.util.Scanner;
public class forTest02 {
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();
contains(num1,num2);//最大公约数
contains1(num1,num2);//最小公倍数
}
public static void contains(int num1,int num2){
if (num1>=num2){
for (int i = num2; i >=0; i--) {
if (num1%i==0&&num2%i==0){
System.out.println(num1+","+num2+"的最大公约数为"+i);
break;
}
}
}else {
for (int i = num1; i >=0; i--) {
if (num1%i==0&&num2%i==0){
System.out.println(num1+","+num2+"的最大公约数为"+i);
break;
}
}
}
}
public static void contains1(int num1,int num2){
int max=(num1>num2) ? num1:num2;
for (int i = max; i <= num1*num2; i++) {
if (i%num1==0&&i%num2==0){
System.out.println(num1+","+num2+"的最小公倍数为"+i);
break;
}
}
}
}
5.4 while循环
while(循环条件){
循环体
迭代部分·
}
案例
import java.util.Random;
import java.util.Scanner;
public class whileTest {
public static void main(String[] args) {
//猜数字
Random r=new Random();
Scanner sc=new Scanner(System.in);
int number= r.nextInt(100);
int count=1;
while (true) {
System.out.println("输入你猜的数字:");
int num=sc.nextInt();
if (num==number){
System.out.println("恭喜你!猜对了!");
break;
} else if (num>number) {
System.out.println("大了");
count++;
}else {
System.out.println("小了");
count++;
}
}
System.out.println(count);
}
}
5.5do-while循环
初始化条件
do{
循环体
迭代部分
}while(循环条件)
说明·:
1.do-while至少循环一次循环体
2.for,while,do-while三者之间可以相互转换
3.do-while在开发中,相对于for,while用的相对较少
案例:
import java.util.Scanner;
/*
案例:银行取款
声明变量balance初始化为0,用来表示银行的账户余额,下面通过ATM机程序实现存款,取款等功能
===========ATM==================
1.存款
2.取款
3.显示余额
4.退出
请选择(1-4):
*/
public class do_while {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int sumMony=0;//定义账余额
boolean flag=true;
do {
System.out.println("==================ATM==================\n" +
"1.存款\n" +
"2.取款\n" +
"3.显示余额\n" +
"4.退出\n" +
"请选择(1-4):");
int choice= sc.nextInt();
if (choice==1){
System.out.println("请输入你要存款的金额:");
int mony=sc.nextInt();
sumMony=mony;//存款操作
} else if (choice==2) {
System.out.println("请输入你要取出的金额:");
int takeMony=sc.nextInt();
sumMony-=takeMony;//取款操作
} else if (choice==3) {
System.out.println("当前账户的余额为:"+sumMony);//查询余额
}else {
flag=false;//退出操作
}
}while (flag);
}
}
6.三种循环结构对比
7.嵌套循环案例
多练!多练!多练!锻炼你的逻辑思维!
public class test { public static void main(String[] args) { /*案例 在控制台打印一个菱形 --------* ------* * * ----* * * * * --* * * * * * * * * * * * * * * * --* * * * * * * ----* * * * * ------* * * --------* 关键点 找关系: i(第几行) j(每一行中空格的个数) k(每一行中*的个数) 1 10-i*2 8 2*i-1 1 2 6 3 3 4 5 4 2 7 5 0 9 */ //上半部分 for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 10 - 2 * i; j++) { System.out.print(" "); } for (int k = 1; k <= 2 * i - 1; k++) { System.out.print("* "); } System.out.println(); } //下半部分 for (int i = 1; i <= 4; i++) { for (int j = 1; j <=i * 2 ; j++) { System.out.print(" "); } for (int k=1;k<=9-2*i;k++){ System.out.print("* "); } System.out.println(); } } }
/*
案例:九九乘法表(新手小白一定要练一练****推荐)
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
...
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 ...
*/
public class test01 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j=1;j<=i;j++){
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println();
}
}
}
8.关键字break和continue的使用
8.1break和continue的说明:
8.2应用案例:
public class breakContinueTest { public static void main(String[] args) { //找出100以内的所有素数 ,素数:只能被1和他本身整数 long l = System.currentTimeMillis(); int count = 0;//统计素数的个数 for (int i = 2; i <= 100000 ; i++) { boolean flag = true; for (int j = 2; j <= Math.sqrt(i); j++) { //Math.sqrt是求平方根的API if (i % j == 0) { flag = false; break; } } if (flag) { count++; System.out.print(i + ","); } } System.out.println(); Long e=System.currentTimeMillis(); System.out.println(count); System.out.println(e-l); } }
企业真题