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
**需要注意的是 **:
- switch选择结构,只适用与等值判断,并且顺序要么从小到大要么从达到小,不然会导致输出结果与预期结果不同。
- case块后面的内容就只能是常量,必须是唯一,不可以是表达式。
- switch 表达是后面只能够跟六种数据类型:int、short、byte、char、枚举(enum)、String等字符串在1.7之后才会适用。整形只能够使用int 和 short。
- 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()。
程序调试的步骤
- 设置断点(程序会在断点位置暂停)
- 单步执行(一步一步执行每一行代码)step Over(F6)/单步进入–step into(F5)
- 观察变量、对象、表达式找到问题解决问题
for && foreach循环
for循环执行顺序:
- 参数初始化
- 条件判断
- 循环体被执行
- 更新循环变量
//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 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。