if(条件表达式) {
语句块;
}
if(条件表达式) {
语句块;
} else {
语句块2;
}
if(条件表达式) {
语句块1;
} else if(条件表达式) {
语句块2;
} else {
语句块3
}
注:switch()中支持的数据类型有 byte、short、char以及int类型,从jdk1.5开始支持枚举类型,从jdk1.7开始支持String类型
swith(变量/表达式) {
case 字面值1:
语句块1;
break;
case 字面值2:
语句块1;
break;
...
default:
语句块n;
}
没有break就会发生case穿透(即代码一直执行,知道遇到break才跳出switch case语句)
default 也可以放在最开始,但是要加上break,否则也会发生case穿透
// 使用switch case分支结构实现考试成绩的等级判断
int score = 66;
switch(score / 10) {
case 10: System.out.println("等级A"); break; // 如果没有break,会发生case穿透
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
}
for(初始化表达式; 条件表达式; 修改初始值表达式) {
循环体;
}
for(int i = 1; i <= 10; i++) { // i = i + 1 => i += 1 => i++
System.out.println("今晚吃鸡,大吉大利,正在进行第" + i + "场游戏...");
Thread.sleep(5000); // 表示模拟睡眠5秒的效果
System.out.println("本场游戏结束!\n\n\n");
}
System.out.println("该休息了,否则明天早上就要迟到了!");
// 使用for循环打印1 ~ 100之间的所有奇数
// 方式一:根据奇数的概念进行打印
for(int i = 1; i <= 100; i++) {
// 若当前i的数值是奇数时则打印,否则不打印 奇数就是不能被2整除的数,也就是对2取余的结果不为0
if(i % 2 != 0) {
System.out.println("i = " + i);
}
}
// 方式二:根据等差数列的概念来打印 每两个数据之间相差2
for(int i = 1; i <= 100; i += 2) {
System.out.println("i = " + i);
}
// 方式三:根据通项公式的规则来打印 2*i-1
for(int i = 1; i <= 50; i++) {
System.out.println("i = " + (2 * i - 1));
}
// 声明一个boolean类型的变量作为发送方的标志
boolean flag = true;
// 使用无限循环来模拟不断地聊天
for(;;) {
// 1.提示用户输入要发送的聊天内容并使用变量记录
System.out.println("请" + (flag? "张三": "李四") +"输入要发送的聊天内容:");
Scanner sc = new Scanner(System.in);
String str = sc.next();
// 2.判断用户输入的内容是否为"bye",若是则聊天结束
if("bye".equals(str)) {
System.out.println("聊天结束!");
break; // 用于跳出当前循环
}
// 3.若不是"bye"则打印用户输入的聊天内容
System.out.println((flag? "张三说:": "李四说:") + str + "\n\n\n");
flag = !flag;
}
/*
使用双重for循环打印九九乘法表
*/
public class ForForTableTest {
public static void main(String[] args) {
// 1.使用外层for循环控制打印的行数,一共9行
outer:for(int i = 1; i <= 9; i++) {
// 2.使用内层for循环控制打印的列数,最多9列,规律是:与当前行所在的行数相等
for(int j = 1; j <= i; j++) {
// 3.使用两个循环变量来拼接等式
System.out.print(j + "*" + i + "=" + j*i + " ");
// 4.当打印完毕6*6 = 36后结束整个打印
if(6 == j) {
//break; // 主要用于跳出循环,但该关键字只能跳出当前所在的循环
break outer; // 表示可以跳出外层for循环
}
}
System.out.println();
}
}
}
/*
编程使用for循环实现猜数字游戏
*/
import java.util.Random;
import java.util.Scanner;
public class ForGuessTest {
public static void main(String[] args) {
// 1.随机生成1 ~ 100之间的整数并使用变量记录
Random ra = new Random();
int temp = ra.nextInt(100) + 1;
//System.out.println("temp = " + temp);
// 4.声明一个int类型的变量来统计用户猜测的次数
int cnt = 0;
for(;;) {
// 2.提示用户输入1 ~ 100之间猜测的整数并使用变量记录
System.out.println("请输入1 ~ 100之间猜测的整数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
cnt++;
// 3.使用用户输入的整数与随机数之间比较大小并给出对应的提示
if(num > temp) {
System.out.println("猜大了,再小一点吧!");
} else if(num < temp) {
System.out.println("猜小了,再大一点吧!");
} else {
System.out.println("恭喜您猜对了,游戏结束!");
break;
}
}
if(1 == cnt) {
System.out.println("你果然是个大咖!");
} else if(cnt <= 6) {
System.out.println("水平不错,继续加油哦!");
} else {
System.out.println("你还可以多玩几次游戏!");
}
}
}
for(初始化表达式1; 条件表达式2; 修改初始值表达式3) {
for(初始化表达式4; 条件表达式5; 修改初始值表达式6) {
循环体;
}
}
/*
编程使用双重for循环打印2 ~ 100之间的所有素数
*/
public class ForForPrimeTest {
public static void main(String[] args) {
// 1.使用for循环打印2 ~ 100之间的所有整数
for(int i = 2; i <= 100; i++) {
// 3.声明一个boolean类型的变量作为是否为素数的标记
boolean isPrime = true;
// 2.针对每一个当前的整数都要判断是否为素数,若是素数则打印,否则不打印
// 判断一个数是否为素数的方法是:若该数不能被2到它本身-1之间的所有整数整除时,则证明该数是素数
// 使用内层for循环用于控制2到该数自身-1之间的范围
// for(int j = 2; j < i; j++) {
// 只需要判断2到该数的平方根即可,因为随着除数的增大商必然减小,会造成重复的判断
for(int j = 2; j <= Math.sqrt(i); j++) {
// 使用当前数除以该循环中的每个数据并判断是否可以整除,只要找到一个可以整除的数据,则证明该数不是素数
if(0 == i % j) {
isPrime = false;
break; // 跳出当前所在的内层循环,也就是不需要再继续除以下一个整数
}
}
// 只可以打印素数
if(isPrime) {
System.out.println("i = " + i);
}
}
}
}
while(条件表达式) {
循环体;
}
/*
编程实现while循环的使用
*/
public class WhileTest {
public static void main(String[] args) {
// 使用while循环打印1 ~ 10之间的所有整数
int i = 1;
while(i <= 10) {
System.out.println("i = " + i);
i++;
}
}
}
/*
编程使用while循环实现任意正整数的反向输出
*/
import java.util.Scanner;
public class WhileReverseTest {
public static void main(String[] args) {
// 1.提示用户输入一个正整数并使用变量记录 123
System.out.println("请输入一个正整数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
// 2.使用while循环进行拆分并打印(此方法可以保存逆序后的最高位的0)
//while(num > 0) {
//System.out.print(num % 10); // 拆分个位数
//num /= 10; // 丢弃个位数
//}
// 2.使用while循环拆分整数中的每个数字并记录到变量中
int res = 0;
int temp = num; // 指定变量作为num的替身
while(temp > 0) {
res = res*10 + temp % 10; // 3 32 321
temp /= 10; // 12 1 0
}
// 3.打印逆序后的结果
System.out.println(num + "逆序后的结果是:" + res);
}
}
注意分号
先执行再判断条件,即至少执行一次循环体
do {
循环体;
} while(条件表达式);
/*
编程实现do while循环的使用
*/
public class DoWhileTest {
public static void main(String[] args) {
// 使用do while循环打印1 ~ 10之间的所有整数
int i = 1;
do {
System.out.println("i = " + i);
i++;
} while(i <= 10);
}
}
/*
编程使用do while循环来模拟学习效果的检查
*/
import java.util.Scanner;
public class DoWhileCheckTest {
public static void main(String[] args) throws Exception {
String msg = null; // 空
do {
System.out.println("正在疯狂学习中...");
Thread.sleep(5000); // 模拟5秒钟
System.out.println("是否合格?(y/n)");
Scanner sc = new Scanner(System.in);
msg = sc.next();
} while(!"y".equals(msg));
System.out.println("恭喜任务合格!");
}
}
// 典故: 十动然拒 笔试考点:有没有分号
// 以下代码可以顺利进行
int i = 1;
while(i <= 10000) {
System.out.println("I Love You !");
i++;
}
// 多加一个分号;以后,程序卡住了
int i = 1;
while(i <= 10000) ; {
System.out.println("I Love You !");
i++;
// 上一段代码效果相当于:
int i = 1;
while(i <= 10000) {
; // 空语句,啥也不干,可以用于延时
}
{
System.out.println("I Love You !");
i++;
}
所以程序才会卡住
本文地址:https://blog.csdn.net/qq_23187859/article/details/107073584
如对本文有疑问, 点击进行留言回复!!
Android 7.0 (Nougat) 平台及以上frameworks增加代码编译错误
JNI/NDK入门指南之C/C++通过JNI访问Java实例方法和类静态方法
【性能】Android中的内存溢出(Out Of Memory,OOM)
网友评论