Java 学习记录 第三天
学习目标
了解掌握Java的循环语句、条件语句、分支语句
学习内容
- while循环
- do…while循环
- for循环
- 增强for循环
- break关键字
- continue关键字
- if…else语句
- switch case语句
while循环
public class Test1 {
public static void main(String[] args) {
Hero hero = new Hero("后羿");
Integer lastMp = hero.getMp();
Integer num = 0;
while (lastMp > 0) {
int usedMp = 100;
hero.unleashSkills(usedMp);
lastMp -= usedMp;
num++;
System.out.println("使用第 " + num + " 次大招。");
}
System.out.println("————————————————————————————————");
System.out.println("蓝不够,再见!!!");
}
}
这里还是使用上周创建的英雄类来实例化英雄对象,来看看以上代码run之后输出了什么吧。
这里要注意的是Heor类的hp、mp类变量都添加private访问修饰符,需要添加公共的get和set方法才能使用,如下所示:
public class Hero {
/**
* 英雄类
*/
private String name = "";
private static Integer hp = 1000; // 血量
private static Integer mp = 500; // 蓝量
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static Integer getHp() {
return hp;
}
public static void setHp(Integer hp) {
Hero.hp = hp;
}
public static Integer getMp() {
return mp;
}
public static void setMp(Integer mp) {
Hero.mp = mp;
}
......
}
do…while循环
public class Test2 {
public static void main(String[] args) {
Hero hero = new Hero("后羿");
Integer lastHp = hero.getHp();
Integer hurt = 1500;
lastHp -= hurt;
System.out.println("受到" + hurt + "伤害,剩余血量:" + lastHp + (lastHp < 0 ? " 英雄死亡!!!" : " 我还活着!!!"));
do {
System.out.println("\n小样!!!劳资可是有复活甲的男人!!!");
lastHp = hero.getHp();
lastHp -= hurt;
System.out.println("\n又受到" + hurt + "伤害,剩余血量:" + lastHp + (lastHp < 0 ? " 英雄死亡!!!" : " 我还活着!!!"));
System.out.println("特么的又死了,辣鸡游戏。卸载!!!");
} while (lastHp > 0);
}
}
说明下这个语句的作用,跟while相比,do…while就算条件没有达到也会执行一次do代码块中的代码,上面是拿复活甲的效果来做个示例。大家都知道英雄的剩余血量只有大于0才能继续行动,但是拥有复活甲的玩家可以拥有一次复活的机会,上述代码就是模拟这个场景所写的。输出结果如下:
for循环
public class Test3 {
public static void main(String[] args) {
Hero hero = new Hero("后羿");
Integer times = 10;
for (int num = 0; num < times; num++) {
hero.mobile();
System.out.println("第 " + (num + 1) + " 次");
}
System.out.println("————————————————————————————");
hero.goBack();
}
}
这是一个简单的示例,下面是上述代码的输出结果:
增强for循环
public class Test4 {
public static void main(String[] args) {
String[] heroName = {"后羿", "鲁班", "孙尚香", "马可波罗"};
for (String name : heroName) {
Hero hero = new Hero(name);
}
}
}
这是一个简单的示例,下面是上述代码的输出结果:
break关键字
break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
break 跳出最里层的循环,并且继续执行该循环下面的语句。
break;
continue关键字
continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
在 for 循环中,continue 语句使程序立即跳转到更新语句。
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。
continue;
if…else语句
public class Test5 {
public static void main(String[] args) {
Hero hero = new Hero("后羿");
Integer lastHp = hero.getHp();
Integer lastMp = hero.getMp();
if (lastMp > 0) {
System.out.println(hero.getName() + "还有蓝,还可以浪一波。");
} else if (lastHp > 0) {
// 多重if...else
System.out.println(hero.getName() + "没蓝了,用红硬拼。");
} else {
Boolean rise = true;
// 嵌套if...else
if (rise) {
System.out.println(hero.getName() + "没血没蓝牺牲,但是拥有复活甲,再次满状态复活。");
} else {
System.out.println(hero.getName() + "没血没蓝牺牲");
}
}
}
}
上述代码是用 if…else 模拟王者荣耀中对抗的一个过程,输出结果如下:
有兴趣的小伙伴可以把变量lastHp和lastMp的值自行调整下,看下输出结果会不会发生改变。
switch case语句
- switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
- switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
- case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
- 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
- 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
- switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
public class Test6 {
public static void main(String[] args) {
Hero hero = new Hero("后羿");
int lastMp = hero.getMp();
String[] doings = { "attack", "mobile", "unleashSkills", "goBack", "" };
for (String doing : doings) {
switch (doing) {
case "attack":
hero.attack();
break;
case "mobile":
hero.mobile();
break;
case "unleashSkills":
while (lastMp > 0) {
hero.unleashSkills(100);
lastMp -= 100;
System.out.println("__________________");
}
System.out.println("没蓝了,浪不动了。");
break;
case "goBack":
Boolean isGo = false;
if (isGo) {
hero.goBack();
} else {
System.out.println("____________");
System.out.println("就是装逼,不回城。");
}
break;
default:
// 当值为空字符串是触发默认语句
System.out.println("开始互喷了,默认行为,站着发呆。");
}
}
}
}
以上是今天的一个综合的示例,运行结果如下:
这一块根据前端的经验来看应该在实际开发中使用是较为多的,所以着重都过了一遍。希望这些能帮助到需要帮助的人,都是些简单的例子,实际开发中往往会比这些复杂得多。但是学习还是要循序渐进,先培养下兴趣再慢慢深入,别一开始就直接看太难了,容易丧失斗志,瞬间劝退。
自学不易,点赞鼓励。
谢谢各位看官,如果有哪里写错的还望指出来哈,共同进步。