java第一章----基础语法(4) 流程控制语句

java学习资源
https://www.bilibili.com/video/av37413483

1.流程控制语句

1.顺序结构

​ 从上到下 从左到右 有括号先算括号;

public class Test {
	public static void main(String[] args) {
		//从上往下依次执行
		int a = 10;
		System.out.println(a);
		
		//从左往右依次执行
		System.out.println("5+5="+5+5);//5+5=55
	}
}
2.选择结构

​ if语句执行顺序:

​ 先判断关系表达式1,若为true执行语句体1,结束;若为false,判断关系表达式2;若都不满足 执行else语句后结束。

​ switch语句执行顺序:

​ 根据传入的key值去找常量值 ,互相匹配则执行相关语句体,直到运行break结束;若都不满足执行default中的语句.

​ key的类型: byte,short,char,int,String

3.循环结构

​ for语句执行顺序:

​ 初始化语句 --> 判断语句 --> 循环体语句 --> 控制语句 --> 判断语句 --> 循环体语句…

​ 初始化语句只执行一次

​ 初始化语句中定义的变量 其作用域只在for循环括号内

public class Tesst1 {
	public static void main(String[] args) {
		int c = 1;
		for (int i = 0,c1 =0 ; i < 10;i++,c++,c1++) {//i c1定义在for中,只能用于for作用域,c定义在main方法中,可以用于main方法作用域
			System.out.println("你真帅");
			System.out.println(c1);
		}
		System.out.println(c);
	}
}

while语句

		int i=1;  //初始化语句
		while(i<=100){
			//循环体;
			//控制条件语句;
		}

do…while语法格式

	初始化语句;
	do{
		循环体语句;
		控制条件语句;
	}while(判断条件语句);

死循环
​ for(;😉{}
​ while(true){}

练习题

下面哪个不能用于switch语句的参数? C
A. byte b=1; B. int i= 1; C.boolean b=false; D.char c=‘a’;

  1. 下面程序执行后输出的结果是什么? C
    for(int I=0;I<2;++I){
    System.out.println("I is "+I);
    }
    A. I is 1
    ​ I is 2
    B. I is 1
    C. I is 0
    I is 1
    D. I is 0

  2. 求1~100之间不能被3整除的数之和

    public class Test{
    	public static void main(String[] args) {
    		//求1~100之间不能被3整除的数之和
    		int sum = 0;
    		for(int i = 1 ;i <100;i++){
    			if( i%3 != 0){
    				sum+=i;
    			}
    		}
    		System.out.println(sum);
    	}
    }
    
  3. 2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?

    public class Test{
    	public static void main(String[] args) {
    		//2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?
    		int people = 8;
    		int year = 2006;
    		while(people <20){
    			people*=1.25;
    			year+=1;
    		}
    		System.out.println(year);
    		System.out.println(people);
    	}
    }
    
  4. 用switch语句实现键盘录入月份,输出对应的季节
    ​ // 3~5月为春季
    ​ // 6~8月为夏季
    ​ // 9~11月为秋季
    ​ // 12月~2月为冬季

import java.util.Scanner;
// 用switch语句实现键盘录入月份,输出对应的季节
		// 3~5月为春季
		// 6~8月为夏季
		// 9~11月为秋季
		// 12月~2月为冬季
public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个月份数字");
		int month = input.nextInt();
		switch (month) {
		case 3:
		case 4:
		case 5:
			System.out.println("春季");
			break;
		case 6:
		case 7:
		case 8:
			System.out.println("夏季");
			break;
		case 9:
		case 10:
		case 11:
			System.out.println("秋季");
			break;
		case 12:
		case 1:
		case 2:
			System.out.println("冬季");
			break;
		default:
			System.out.println("错误的月份");
			break;
		}
	

	}
}

  1. 打印出所有的水仙花数

    所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身,例如:153 = 13+53+3^3

import java.util.Scanner;
public class Test {
	//打印出所有的水仙花数   
	//所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身,例如:153 = 1^3+5^3+3^3
	public static void main(String[] args) {
			for(int i = 100;i<1000;i++){
				int baiwei = i/100;
				int shiwei =i%100/10;
				int gewei = i%10;
				if(i == baiwei*baiwei*baiwei + shiwei*shiwei*shiwei + gewei*gewei *gewei){
					System.out.println(i);
				}
			}
	}
}
  1. 找出 1 - 100之间所有的包含7或者被7整除的数字
public class Test2 {
	//找出 1 - 100之间所有的包含7或者被7整除的数字
	public static void main(String[] args) {
		for(int i =1;i<=100;i++){
			if(i/10 ==7){
				System.out.println(i);
			}else if(i%7 ==0){
				System.out.println(i);
			}else if(i%10==7){
				System.out.println(i);
			}
		}
	}
}
  1. 一球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,
    问第10次落地时,一共经过多少米,第十次反弹多高
public class Test3 {
	//一球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,
	//问第10次落地时,一共经过多少米,第十次反弹多高
	public static void main(String[] args) {
		int count = 0;
		double sum = 0;
		double huitan = 100;
		while(true){
			count ++;
			if(count ==1){
				sum = 100;
			}else{
				sum+= huitan*2;
			}
			huitan /=2;
			if(count ==10){
				break;
			}
		}
		System.out.println(sum);
		System.out.println(huitan);
	}
}

  1. 求1 - 100之间的所有的奇数和和偶数和

    public class Test4 {
    //求1 - 100之间的所有的奇数和和偶数和
    	public static void main(String[] args) {
    		int ji = 0;
    		int ou = 0;
    		for(int i =1;i<=100;i++){
    			if(i%2==0){
    				ou+=i;
    			}else{
    				ji+=i;
    			}
    		}
    		System.out.println(ji);
    		System.out.println(ou);
    	}
    }
    
  2. 使用for循环打印 小写字母a-z 大写字母A-Z

    import java.util.Scanner;
    
    public class Test {
    	public static void main(String[] args) {
    		//使用for循环打印  小写字母a-z			大写字母A-Z
    		for (int i = 'a'; i < 'z'; i++) {
    			System.out.println((char)i);
    		}
    		System.out.println("---------------------------------------");
    		for (char i = 'A'; i < 'Z'; i++) {
    			System.out.println(i);
    		}
    	}
    }
    
  3. 键盘录入x的值,计算出y的并输出。
    ​ x>=3 y = 2x + 1;
    ​ -1<=x<1 y = 2x;
    ​ x<-1 y = 2x – 1;

    import java.util.Scanner;
    
    public class Test {
    	public static void main(String[] args) {
    		//		键盘录入x的值,计算出y的并输出。
    		//		x>=3	y = 2x + 1;
    		//		-1<=x<1	y = 2x;
    		//		x<-1	y = 2x – 1;
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入一个数字");
    		int x = sc.nextInt();
    		int y = 0;
    		if (x >= 3) {
    			y = 2*x + 1;
    		}else if (-1<=x && x<1) {
    			y = 2*x;
    		}else if (x < -1) {
    			y = 2 * x - 1;
    		}else if (x == 1 || x == 2) {
    			System.out.println("没有对应的计算公式");
    			return;  //直接结束方法,此时外面的System.out.println(y)语句也无法执行(无法执行的原因是return阻断了,而不是y没有值)
    		}
    		System.out.println(y);
    
    	}
    }
    
    
  4. 找出1 - 1000之间 能被 7 或者 3 或者 5 整除的数分别有几个

    public class Test6 {
    //找出1 - 1000之间  能被 7 或者 3 或者 5 整除的数分别有几个
    	public static void main(String[] args) {
    		int chu7 = 0;
    		int chu3 = 0;
    		int chu5 = 0;
    		for(int i =1;i<=1000;i++){
    			if(i %7 ==0){
    				chu7+=1;
    			}
    			if(i%3==0){
    				chu3+=1;
    			}
    			if(i%5==0){
    				chu5+=1;
    			}
    			
    		}
    		System.out.println("除7的为"+chu7);
    		System.out.println("除3的为"+chu3);
    		System.out.println("除5的为"+chu5);
    	}
    }
    
    
  5. 假设某人有100,000现金.每经过一次路口需要进行一次交费. 交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000.请写一程序计算此人可以经过多少次这个路口

    public class Test7 {
    //假设某人有100,000现金.每经过一次路口需要进行一次交费. 交费规则为当他现金大于50,000时
    	//每次需要交5%如果现金小于等于50,000时每次交5,000.请写一程序计算此人可以经过多少次这个路口
    	
    	public static void main(String[] args) {
    		double money = 100000;
    		int count =0;
    		
    		while(money >=5000){
    			if(money >50000){
    				money -=money*0.05;
    			}else{
    				money -=5000;
    			}
    			count++;
    		}
    		System.out.println(count);
    		System.out.println(money);
    	}
    }
    
    
  6. 公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?

    public class Test8 {
    //公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。
    //到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
    	
    	public static void main(String[] args) {
    		int day = 0;
    		int sum = 1;
    		while(true){
    			day+=1;
    			sum=(sum+1)*2;
    			if(day ==7){
    				System.out.println(sum);
    				break;
    			}
    		}
    	}
    }
    
    
  7. 自动登录练习

    需求: 1.控制台提示用户输入密码
    ​ 2.用户输入密码
    ​ 3.如果用户输入的密码不等于1234,回到步骤1
    ​ 4.如果用户输入的密码等于1234,提示登录成功

    //方法1
    import java.util.Scanner;
    public class Test {
    //	需求: 1.控制台提示用户输入密码
    //				2.用户输入密码
    //				3.如果用户输入的密码不等于1234,回到步骤1
    //				4.如果用户输入的密码等于1234,提示登录成功
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		while(true){
    			System.out.println("请输入密码");
    			String passwd = sc.next();
    			if( "1234".equals(passwd)){
    				System.out.println("登陆成功");
    				break;
    			}
    		}
    	}
    }
    
    
  8. import java.util.Scanner;
    public class Test {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		String password;//先声明变量
    		do {
    			System.out.println("请输入密码");
    			password = sc.next();
    		}while(!"1234".equals(password));
    		
    		System.out.println("登录成功");
    	}
    }
    
    

    贪吃蛇:在键盘上输入一个数,如果是1,代表蛇吃到食物,得分加10,并继续输入,
    如果输入的是一个非1的数字,停止程序,输出得分

    import java.util.Scanner;
    public class Test {
    	//贪吃蛇:在键盘上输入一个数,如果是1,代表蛇吃到食物,得分加10,并继续输入,
    	//如果输入的是一个非1的数字,停止程序,输出得分
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int count = 0;
    		while(true){
    			System.out.println("输入一个数字");
    			int go = sc.nextInt();
    			if(go ==1){
    				count +=10;
    			}else{
    				break;
    			}
    		}
    		System.out.println("您的得分为"+count);
    	}
    }
    
    
  9. 假设一个简单的ATM机的取款过程是这样的:
    首先提示用户输入密码(password),
    最多只能输入三次,超过3次则提示用户“密码错误,
    请取卡”结束交易。如果用户密码正确,
    再提示用户输入取款金额(amount),
    ATM机只能输出100元的纸币,一次取钱数要求最低
    100元,最高1000元。
    若用户输入的金额符合上述要求,则打印输出用户取得钱数,
    最后提示用户“交易完成,请取卡”,否则提示用户重新输入金额。
    假设用户密码是111111,请编程实现。

import java.util.Scanner;
/**
 * 假设一个简单的ATM机的取款过程是这样的:
首先提示用户输入密码(password),最多只能输入三次,超过3次则提示用户“密码错误,请取卡”结束交易。
如果用户密码正确,
再提示用户输入取款金额(amount),
ATM机只能输出100元的纸币,一次取钱数要求最低100元,最高1000元。
若用户输入的金额符合上述要求,则打印输出用户取得钱数,
最后提示用户“交易完成,请取卡”,否则提示用户重新输入金额。
假设用户密码是111111,请编程实现。 
 */
public class Test9 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		for(int i=1 ;i <=3 ;i++){
			System.out.println("请输入密码");
			String input = sc.next();
			if("111111".equals(input)){
				System.out.println("密码正确");
				break; //退出循环
			}else if (i ==3){
				System.out.println("密码错误,请取卡");
				return;  //结束方法
			}else{
              System.out.println("密码错误,请重新输入,您还有"+(3-i)+"次机会");  
			}
		}
		while(true){
			System.out.println("输入取款金额");
			int amount = sc.nextInt();
			if(amount <100 | amount>1000| amount%100!=0){
				System.out.println("重新输入金额");
			}else{
				System.out.println("取出"+amount+"金额");
				break;
			}
		}
		System.out.println("交易完成");
	}
}
  1. 将学生考试成绩做评级 90 - 100 为A 80-90位B 70-80为C 60-70为D 60以下为渣子
    ​ 分别使用ifelse和switch去实现 //if else自己写吧
    ​ 90 - 99 80-89 70 -79 60-69 60
import java.util.Scanner;

public class Test{
	public static void main(String[] args) {
		// 将学生考试成绩做评级 90 - 100 为A 80-90位B 70-80为C 60-70为D 60以下为渣子
		// 分别使用ifelse和switch去实现
		// 90 - 99   80-89   70 -79   60-69   60
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您的成绩");
		int score = sc.nextInt();
		if (score > 100 || score < 0) {
			System.out.println("您的成绩不符合要求");
			return;
		}
		int a = score / 10;
		switch (a) {
		case 10:
		case 9:
			System.out.println("A");
			break;
			
		case 8:
			System.out.println("B");
			break;
			
		case 7:
			System.out.println("C");
			break;
			
		case 6:
			System.out.println("D");
			break;
		
		default:
			System.out.println("E");
			break;
		}
		
	}
}

  1. 键盘录入两个数 再录入一个 + - / * % 其中的一个运算符
    根据录入的运算符 然后让两个数做对应的运算
    使用switch实现下面的改代码
import java.util.Scanner;

public class SwitchDemo3 {
	public static void main(String[] args) {

		// 键盘录入两个数 再录入一个 + - / * % 其中的一个运算符
		// 根据录入的运算符 然后让两个数做对应的运算
		// 使用switch实现下面的改代码

		Scanner sc = new Scanner(System.in);

		System.out.println("请输入第一个数字");
		int a = sc.nextInt();

		System.out.println("请输入第二个数字");
		int b = sc.nextInt();

		System.out.println("请输入您要选择的运算:+ - * / %");
		String s = sc.next();

		switch (s) {
		case "+":
			System.out.println(a + b);
			break;

		case "-":
			System.out.println(a - b);
			break;
		case "*":
			System.out.println(a * b);
			break;
		case "/":
			System.out.println(a / b);
			break;
		case "%":
			System.out.println(a % b);
			break;
		default:
			System.out.println("不支持的运算");
			break;
		}
	}
}

  1. ​ 练习:

    按照要求补齐程序

    for(int x=1; x<=10; x++) {

    if(x%3==0) {

    //在此处填写代码

    }

    System.out.println(“Java基础班”);

    }

    我想在控制台输出2次:“Java基础班“ 应填写: break 或者 return

    我想在控制台输出7次:“Java基础班“ 应填写: continue

    我想在控制台输出13次 “java基础班” 应填写: System.out.println(“Java基础班”);

  2. 小娟的妈妈每天给她3元钱,她都会存起来,但是,每当这一天的天数是存钱的第6天或者6的倍数的话,她都会花去5元钱,请问,经过多少天,小娟才可以存到100元钱

public class Test {
	public static void main(String[] args) {
		// 小娟的妈妈每天给她3元钱,她都会存起来,
		// 但是,每当这一天的天数是存钱的第6天或者6的倍数的话,她都会花去5元钱,
		// 请问,经过多少天,小娟才可以存到100元钱
		
		int day = 0;
		int money = 0;
		
		while(money < 100){
			money+=3;
			day++;
			if (day % 6 == 0) {
				money -= 5;
			}
		}
		System.out.println(day);
	}
}

  1. 打印99乘法表

    public class Test {
    	public static void main(String[] args) {
    		for (int i = 1; i < 10; i++) {
    			for (int j = 1; j < i+1; j++) {
    				System.out.print(j + " * " + i +" = " + (i * j)+"\t");
    			}
    			System.out.println();
    		}
    	}
    }
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值