一、分支结构
f分支结构:
if(条件表达式){
语句块
}
if else分支结构:
if(条件表达式){
语句块
}
else{
语句块
}
else if分支结构:
if(条件表达式){
语句块
}else if(语句块){
}else{
}
switch case 分支结构:
switch(变量/表达式){
case 字面值1:语句块;break;
case 字面值2:语句块;break;
......
default:语句块n;
}
注:case穿透
当上一条语句不写break是,会直接执行下一条case语句并打印结果
注意:
二、循环结构:(重复一段代码,复杂的结构都能够用顺序条件循环实现)
for循环:
for(初始化表达式;条件表达式;修改初始值表达式){
循环体;
}
注:Thread.sleep(5000);//表示模拟睡眠5秒的效果,在声明main方法时还需要加上throws Exception
题目:打印水仙花数(所谓水仙花数既是一个整数满足其值等于各个数位的立方和)
contiue关键字
提前结束本次循环,继续下一次循环,跳至i++
break关键字
退出当前语句块,直接跳出循环,常结合无限循环使用for(;;)
注:随机数生成方法
还需要导入java.util.Random
双重for循环
注:多重循环不宜嵌套太多层,一般到三重即可,否则效率太低
标号跳出循环:
打印素数(质数):该数只能被1和它本身整除。
while循环
while(条件表达式){
表达式
}
while循环和for循环的比较:
1、推荐使用for循环
2、while循环适合明确循环条件但是不明确循环次数
3、for循环更适合明确循环次数的场合
4、while(true)类比于for(;;)
do while循环(先执行循环体再判断条件表达式)
使用在至少执行一次循环体的场合
do{
循环体
}while(条件表达式)
while循环和dowhile循环条件表达式为true时执行循环体
循环的笔试考点:while(i <=10000);{
} 等于while(i<=10000){;}
课堂练习:
一、个税计算
/*
个税计算
*/
import java.util.Scanner;
public class TaxTest{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int earn = sc.nextInt();
double temp = 0;
if(earn <= 5000){
System.out.println("您的收入不计税。");
}else if(earn <= 8000){
temp = (earn-5000) * 0.05;
System.out.println("扣取的税费为:" + temp);
}else if(earn <= 17000){
temp = 3000*0.05 + (earn - 8000) * 0.1;
System.out.println("扣取的税费为:" + temp);
}else if(earn <= 30000){
temp = 3000*0.05 + 9000 * 0.1 +(earn - 17000) * 0.2;
System.out.println("扣取的税费为:" + temp);
}else if(earn <= 40000){
temp = 3000*0.05 + 9000 * 0.1 + 13000 * 0.2 + (earn - 30000) * 0.25;
System.out.println("扣取的税费为:" + temp);
}else if(earn <= 60000){
temp = 3000*0.05 + 9000 * 0.1 + 13000 * 0.2 + 10000 * 0.25 + (earn - 40000) * 0.3;
System.out.println("扣取的税费为:" + temp);
}else if(eaen <= 85000){
temp = 3000*0.05 + 9000 * 0.1 + 13000 * 0.2 + 10000 * 0.25 + 20000 * 0.3 + (earn - 60000) * 0.35;
System.out.println("扣取的税费为:" + temp);
}else{
temp = 3000*0.05 + 9000 * 0.1 + 13000 * 0.2 + 10000 * 0.25 + 20000 * 0.3 + 20000 * 0.35 + (earn -80000) * 0.45;
}
}
}
二、出租车车费计算
import java.util.Scanner;
public class TaxiCharging{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入历程数:");
int k = sc.nextInt();
System.out.println("请输入等候时间:");
int d = sc.nextInt();
int charge = 0;
int time = d / 150;
if(k <= 3){
//int time = d / 150;
charge = 13 + time;
System.out.println("费用为:"+charge);
}else if(k <= 15){
//int time = d / 150;
charge = 13 + (k-3)*2 + time;
System.out.println("费用为:"+charge);
}else{
charge = 13 + (15 - 3) * 2 + (k - 15)*3 +time;
System.out.println("费用为:"+charge);
}
}
}
三、对话程序
import java.util.Scanner;
public class BreakAndContiue{
public static void main(String[] args){
boolean flag = true;
for(;;){
System.out.println("请"+(flag?"张三":"李四") + "发言");
Scanner sc = new Scanner(System.in);
String str = sc.next();
if("bye".equals(str)){
System.out.println("谢谢退出游戏");
break;
}
System.out.println((flag==true?"张三":"李四")+"说"+str);
flag = !flag;
}
}
}
四、for循环使用案例
public class print100{
public static void mian(Stirng[] args){
/*打印奇数的三种方法*/
for(int i= 1;i <= 100;i++){
if(i % 2 != 0){
System.out.print(i+" ");
}
}
for(int i = 1;i <= 100;i += 2){
System.out.println(i);
}
for(int i = 1;i <= 50;i++){
System.out.println(i * 2 - 1);
}
/*打印累加和*/
int sum = 0;
for(int i = 1;i <= 10000;i++){
sum += i;
}
System.out.println(sum);
/*打印水仙花数*/
for(int i = 100;i < 1000;i++){
int a = i/100;
int b = i%100/10;
int c = i%100%10;
if(i == (a*a*a +b*b*b +c*c*c)){
System.out.println(i);
}
}
}
}
五、双重for循环使用案例
/*
双重for循环举例
*/
import java.util.Scanner;
public class DoubleForTest{
public static void main(String[] args){
/*打印各种星星图案*/
for(int i = 0;i < 5;i++){
for(int j = 0;j < 5;j++){
System.out.print("*");
}
System.out.println();
}
for(int i = 0;i < 5;i++){
for(int j = 0;j < i + 1;j++){
System.out.print("*");
}
System.out.println();
}
for(int i = 0;i < 5;i++){
for(int j = i;j < 5;j++){
System.out.print("*");
}
System.out.println();
}
for(int i = 1; i <= 5;i++){
for(int k = 1;k <= 5 - i;k++){
System.out.print(" ");
}
for(int j = 1;j <= 2*i-1;j++){
System.out.print("*");
}
System.out.println();
}
/*打印99乘法表*/
outer:for(int i = 1;i <= 9;i++){
for(int j = 1;j <= i;j++){
int multiply = i * j;
System.out.print(j + "*" + i + "=" + multiply + " ");
if(6 == j){
break outer;
}
}
System.out.println();
}
/*打印2~100之间的所有素数*/
//优化:只要计算到平方根即可
for(int i = 2;i <=100;i++){
boolean flag = true;
for(int j = 2;j < Math.sqrt(i);j++){
if(i % j == 0){
flag = false;
break;
}
/*
if(i == j){
System.out.println(i);
}
*/
}
if(flag){
System.out.println(i);
}
}
/*使用while循环实现调和数列的累加和*/
Scanner sc = new Scanner(System.in);
int key = sc.nextInt();
double sum = 0.0;
int i = 1;
while(i <= key){
sum += 1.0/i;
i++;
}
System.out.println(sum);
}