Java(3)语法结构——分支结构if/switch、循环结构for/while

分支结构——if

基本结构:

if () {
}else if(){
}else if(){
}else{
}

例:猜数小游戏,生成1到6的随机整数,猜点小(1,2,3)还是点大(4,5,6)

import java.util.Scanner;
public class branch{
	public static void main(String[] args){
		/*猜数小游戏*/
		System.out.println("买大买小,买定离手");
		Scanner input = new Scanner(System.in);
		String guess = input.nextLine();
		int number = (int)(Math.random()*6+1);
		if ((guess.equals("小")  && number<=3)||(guess.equals("大")  && number>3)){
			System.out.println("bingo!");
		}else{
			System.out.println("gun");
		}
	}
}

分支结构——switch

基本结构:

switch(a){    //a可为byte,int,short,char等
case1: 代码1;break;//break非必须,只有想让代码执行完此步后跳出switch时使用
case2: 代码2;break;//break非必须
case3: 代码3;break;//break非必须
default: 代码;
}

例:输入百分制成绩,判定成绩区间(不及格,及格,良好,优秀,内卷,学神,错误的成绩)

import java.util.Scanner;
public class branch{
	public static void main(String[] args){
		/*switch判定成绩区间*/
		System.out.println("请输入成绩");
		Scanner input = new Scanner(System.in);
		byte score = (byte)(input.nextInt());
		switch(score/10){
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			System.out.println("很遗憾您不及格");
			break;  //如果此处没有break,执行完这步后会接着执行case6
		case 6:
			System.out.println("恭喜您及格了");
			break;
		case 7:
			System.out.println("您成绩良好");
			break;
		case 8:
			System.out.println("您真优秀");
			break;
		case 9:
			System.out.println("太卷");
			break;
		case 10:
			if (score==100){
				System.out.println("神");
				break;
			}
		default:
			System.out.println("没这个成绩");
			break;    //可有可无的break
		}
	}
}

if语句优势是可以写复杂的逻辑,switch语句优势是执行效率高。

循环结构——for循环

基本结构:

for (int a=3; a<10; a+=2){
	语句1;
	语句2;
	...
}

for 循环的逻辑执行流程为:

  1. 先执行初始化,例如上例的"int a=3;";
  2. 然后执行第一步循环:执行判断语句(如上例"a<10")—>执行循环体代码块—>执行循环变量变化语句(如上例"a+=2");
  3. 每一步循环都是一样的流程,直到最后一步执行循环变量变化的语句后,发现再下一步的判断语句为false,于是循环终止。

for循环变体:

int a=1;
for (; a<10; ){
	语句1;
	语句2;
	...
	a++;
}
  • for循环要素一初始化语句可以写在循环体外,要素三循环变量变化语句可以写在循环体语句块里,要素二只能写在括号内,两个分号不能省;
  • 原始的for循环执行完后,变量a的生命周期完结,再往下执行循环后的其他语句,变量a已经不存在了,需要重新声明和初始化才会有变量a;
  • 但修改后不一样,因为修改后的变体,变量a的声明和初始化再循环体外执行,循环运行完后,变量a依然存在,且a值为循环执行最后一步的a值。

小试牛刀一:

public class forXun{
	public static void main(String[] args){
		int i = 0;
		for(int i=0; i<5; ++i){  //此处报错
			System.out.println(i);
		}
	}
}

上述代码编译报错:已在方法 main(String[])中定义了变量 i ,这说明for循环括号内的初始化语句声明的变量不可与for循环外且出现在for循环之前的变量同名。

小试牛刀二:

public class forXun{
	public static void main(String[] args){
		int i = 0;
		for(i=3; i<5; ++i){
			System.out.println(i);
		}
	}
}

上述代码会打印3和4。

小试牛刀三:

public class forXun{
	public static void main(String[] args){
		int i = 0;//为了能够查看循环最后一步得到的值,在这声明变量
		for(i=1; i<30; i=++i+i++){
			i=i++;
			System.out.println(i);
		}
		System.out.println(i);
	}
}

上述代码运行结果为:1、4、10、22、46。

小试牛刀四:
问题:a,b,c,d四个员工共生产370个零件,如果员工a多生成10个,员工b少生产20个,员工c生产数乘以2,员工d生产数除以2,则他们的数量相等,问四名员工各生产了多少件?

public class ProductNum{
	public static void main(String[] args){
		boolean flag = true;
		for(int x=1;x<=370;x++){
			if(x-10+x+20+x/2+x*2==370){
				System.out.println("员工a生产了"+(x-10)+"件");
				System.out.println("员工b生产了"+(x+20)+"件");
				System.out.println("员工c生产了"+(x/2)+"件");
				System.out.println("员工d生产了"+(x*2)+"件");
				flag = false;
			}
		}
		if (flag){
			System.out.println("不存在这样的情况");
		}
	}
}

小试牛刀五:
问题:鸡和兔共50只,共有160只脚,问鸡兔各几只?

public class ProductNum{
	public static void main(String[] args){
		boolean flag = true;
		for(int x=1; x<=50; x++){
			if(x*2+(50-x)*4==160){
				System.out.println("鸡"+x+"只");
				System.out.println("兔"+(50-x)+"只");
				flag = false;
			}
			switch(x){case 50:if(flag) System.out.println("无解");}
		}
	}
}

小试牛刀六:
问题:寻找四位数字的水仙花数(如1634=14+64+34+44)

public class ProductNum{
	public static void main(String[] args){
		for(int x=1000; x<10000; x++){
			int ge = (int)Math.pow(x%10,4);
			int shi = (int)Math.pow(x%100/10,4);
			int bai = (int)Math.pow(x/100%10,4);
			int qian = (int)Math.pow(x/1000,4);
			if(ge+shi+bai+qian==x){
				System.out.println(x);
			}
		}
	}
}

上述代码输出结果为:1634、8208、9474。

循环结构——while循环

基本结构:

int i = 0;  //初始化语句
while(i<5){  //比较语句
	语句1;
	语句2;
	...
	i++;  //循环变量变化语句
}

小试牛刀七:
问题:瓜农卖西瓜,共1020个,每天卖掉总数的一半多两个,几天才能卖完所有的瓜?

public class ProductNum{
	public static void main(String[] args){
		int day = 0;
		int sum = 1020;
		while(sum>0){
			day++;
			sum -= 0.5*sum+2;
		}
		System.out.println("卖了"+day+"天才卖完");
	}
}

小试牛刀九:
问题:画出下面的图形。
在这里插入图片描述

public class ProductNum{
	public static void main(String[] args){
		int x = 1;
		int lineNum = 5;
		while(x<=lineNum){
			int y = 1;
			int z = 1;
			while(y<=lineNum-x){
				System.out.print(" ");
				y++;
			}
			while(z<=2*x-1){
				z++;
				System.out.print("*");
			}
				System.out.println();  //换行
			x++;
		}
	}
}

循环结构——do…while循环

基本结构:

int i = 0;  //初始化语句
do{         //比较语句
	语句1;
	语句2;
	...
	i++;    //循环变量变化语句
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值