选择结构与循环结构

java选择和循环知识

选择结构

单独的if、多重if、嵌套的if、if-else、switch、键盘输入scan.next…()

java中的if-else表示方法:

public class Test{
	public static void main(String[] args){
        //使用if-else语句判断学生成绩
		int score = 80;
		if(score >= 90){
			System.out.println("优秀");
		}else if(score >= 80 && score < 90){
			System.out.println("良好");
		}else if(score >= 70 && score <80){
			System.out.println("中等");
		}else if(score >= 60 && score < 70){
			System.out.println("及格");
		}else{
			System.out.println("有待提高");
		}
	}
}
//运行结果如下:
    良好

switch 选择结构

//通过switch 编写一个手机类,它可以完成充电和放音乐的功能。
   //手机类:
package phone;

import java.util.Scanner;

public class Phones {
	
	Battery bt = new Battery();
	Scanner scan = new Scanner(System.in);
	
	/**
	 * 主要检测充放电,
	 */
	public void runResult() {
		System.out.println("请选择以下的业务:\n 1.下载\n 2.播放下载的音乐\n 3.关机");
		int num = scan.nextInt();
		System.out.println("请输入当前电量:");
		int power = scan.nextInt();
		switch(num){
		case 1:
			System.out.println("正在下载音乐!");
			power -= 2;
			charge(power);
			break;
		case 2:
			System.out.println("正在播放下载的音乐!");
			power -= 5;
			charge(power);
			break;
		case 3:
			//推出JVM
			System.out.println("当前电量为:" + power);
			System.exit(3);
			break;
		}
		System.out.println("当前电量是:" + power);
	}
	
	/**
	 * 播放下载的音乐
	 */
	public void playMusic(int cellContent) {
		
	}
	
	/**
	 * 下载
	 */
	public void download(int cellContent) {
		
	}
	
	/**
	 * 充电
	 */
	public void charge(int cellContent) {
		if(cellContent <= 20) {
			System.out.println("低电量,请连接你的充电器!y/n");
			String chargeLine = scan.next();
			int time1, time2;
			time1 = (int) Math.ceil((100 - cellContent)/2);
			time2 = (int) Math.floor(cellContent /2);
			if("y".equals(chargeLine)) {
				bt.cell(cellContent);
				System.out.println("品牌" + bt.brand + "正在充电。将于" + time1 + "分钟完成!!");
			}else {
				System.out.println("手机将于" + time2 + "分钟后关机!!");
			}
		
		}
	}

}

//电池类
package phone;

import java.util.Scanner;

public class Battery {
	String brand;
	
	/**
	 * 续电
	 * @param cellContent
	 */
	public void cell(int cellContent) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入你的手机品牌:" );
		brand = scan.next();
		cellContent += 2;
	}
}

//测试类
package phone;

public class TestPhone {
	public static void main(String[] args) {
		new Phones().runResult();
	}

}
//运行结果如下:
请选择以下的业务:
 1.下载
 2.播放下载的音乐
 3.关机
1
请输入当前电量:
35
正在下载音乐!
当前电量是:33

**需要注意的是 **:

  1. switch选择结构,只适用与等值判断,并且顺序要么从小到大要么从达到小,不然会导致输出结果与预期结果不同。
  2. case块后面的内容就只能是常量,必须是唯一,不可以是表达式。
  3. switch 表达是后面只能够跟六种数据类型:int、short、byte、char、枚举(enum)、String等字符串在1.7之后才会适用。整形只能够使用int 和 short。
  4. break的作用是跳出这个case块同时跳出switch循环,default的作用是在没有找到case块时执行。没有break的时候就会一直往下执行。
switch和if之间的异同
相同点不同点
都是用来处理多分支条件的结构switch只能处理等值条件判断的情况
异常处理

判断在条件语句中输入是否合理

Scanner scan = new Scanner(System.in);
if(scan.hasNext//输入类型()){
    //在满足输入条件的情况下执行里面的内容。
}----但这不是最好的解决方案。 

循环结构

**循环结构是为了解决重复相同的情况java中循环的关键字有:**while—>先判断,后执行、do while—>先执行,后判断、for、foreach

while && do while循环

while(循环条件){
    循环操作
}

//while先判断,再执行

do{
    循环操作
}while(循环条件);

//do  while  先执行再判断

while循环案例:

while(){
    //先判断,后执行
}
public class FiveTestThree {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("考试合格了吗?(y/n)");
        String flag = scan.next();
        while(!"y".equals(flag)) {
            System.out.println("上午学理论,\n下午写代码");
            System.out.println("考试合格了吗?(y/n)");
            flag = scan.next();
        }
    }
}
//判断字符串里面的值是否相等需要用到的方法是.equals()。
程序调试的步骤
  1. 设置断点(程序会在断点位置暂停)
  2. 单步执行(一步一步执行每一行代码)step Over(F6)/单步进入–step into(F5)
  3. 观察变量、对象、表达式找到问题解决问题

for && foreach循环

for循环执行顺序:

  1. 参数初始化
  2. 条件判断
  3. 循环体被执行
  4. 更新循环变量
//for循环最简洁的死循环:
for(;;){
    
}

for循环案例

package test;
/**
 * 测试题一:
	需求描述:
	以面向对象的思想,编写自定义类描述IT从业者。设定属性包括:姓名、年龄、技术方向、工作年限;方法包括:工作

	要求:
	1.限定从业人员必须年满15岁,无效信息需提示,并设置设置默认年龄为15
	2.工作方法通过输入参数,接收工作单位和职务,输出个人工作信息
	3.编写测试类,测试IT从业者类的对象及相关方法(测试数据信息自定)
 * @author XRY
 *
 */
public class IT {
	String name;
	int age;
	String technicalDirection;
	int year;
	
	public void workInfo() {
		System.out.println(name + "\t" + age + "\t" + technicalDirection + "\t" + year);
	}
}


//处理对象类
package test;
/**
 * 处理对象类
 * 测试题一:
	需求描述:
	以面向对象的思想,编写自定义类描述IT从业者。设定属性包括:姓名、年龄、技术方向、工作年限;方法包括:工作

	要求:
	1.限定从业人员必须年满15岁,无效信息需提示,并设置设置默认年龄为15
	2.工作方法通过输入参数,接收工作单位和职务,输出个人工作信息
	3.编写测试类,测试IT从业者类的对象及相关方法(测试数据信息自定)
 * @author XRY
 *
 */
public class DealIT {
	//创建对象数组
	IT[] its = new IT[5];
	
	
	/**
	 * 添加内容到对象数组中
	 * 
	 */
	public void addIT(IT it) {
		for(int i = 0; i < its.length; i++) {
			if(its[i] == null) {
				its[i] = it;
				break;
			}
		}
	}
	
	
	/**
	 * 创建工作类,是一个处理的过程
	 * 方法包括:工作

	要求:
	1.限定从业人员必须年满15岁,无效信息需提示,并设置设置默认年龄为15
	2.工作方法通过输入参数,接收工作单位和职务,输出个人工作信息
	3.编写测试类,测试IT从业者类的对象及相关方法(测试数据信息自定)
	 */
	public void work() {
		for(int i = 0; i < its.length; i++) {
			if(its[i].age < 15) {
				System.out.println("年龄无效,设置默认年龄为15.");
				its[i].age = 15;
				break;
			}
		}
	}
	
	
	/**
	 * 显示
	 */
	public void view() {
		for(int i = 0; i < its.length; i++) {
			if(its[i] != null) {
				its[i].workInfo();
			}
		}
	}
	

}

//测试IT类
package test;
/**
 * 测试IT类
 * @author XRY
 *
 */
public class TestIT {
	public static void main(String[] args) {
		IT it1 = new IT();
		IT it2 = new IT();
		DealIT dit = new DealIT();
		
		
		it1.age = 14;
		it1.name = "赵四";
		it1.technicalDirection = "java全栈开发!!";
		it1.year = 5;
		
		it2.age = 23;
		it2.name = "张三";
		it2.technicalDirection = "程序员!!";
		it2.year = 2;
		
		dit.addIT(it1);
		dit.addIT(it2);
		//System.out.println();
		dit.work();
		dit.view();
	}
		
}

foreach循环

foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。

for循环和foreach循环之间的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值