一、switch
注意事项:表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String。不支持double、float、long。
二、利用switch穿透性解决问题
存在多个case分支的功能代码是一样的时,可以用穿透性把流程集中到同一处处理,这样可以简化代码。
public class demo3 {
public static void main(String[] args) {
int month = 7;
switch (month){
case 1:
case 3:
case 5:
case 7:
case 9:
case 11:
System.out.println(month + "月有31天");
break;
case 2:
System.out.println(month + "月,闰年有29天,非闰年有28天");
break;
case 4:
case 6:
case 8:
case 10:
case 12:
System.out.println(month + "月有30天");
break;
}
}
}
三、求1到50的和
public class demo4 {
public static void main(String[] args) {
//求1到50之和
int sum = 0;
//输入fori可快速写出循环代码
for (int i = 1; i <= 50; i++) {
sum += i;
}
System.out.println("1到50的和为:" + sum);
}
}
四、求1到50的奇数和
public class demo5 {
public static void main(String[] args) {
//求1到50的奇数和
int sum = 0;
for (int i = 0; i <= 50; i++) {
if (i % 2 == 1) {
sum += i;
}
}
System.out.println("1到50的奇数和为:" + sum);
System.out.println("-------------------------------------------");
//方法二
int sum2 = 0;
for (int i = 1; i <= 50; i += 2) {
sum2 += i;
}
System.out.println("1到50的奇数和为:" + sum2);
}
}
五、水仙花数
public class demo6 {
public static void main(String[] args) {
int count = 0;
int ge,shi,bai = 0;
for (int i = 100; i <= 999; i++) {
ge = i % 10;
shi = i / 10 % 10;
bai = i / 100;
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
System.out.println(i + "\t");
count++;
}
}
System.out.println("水仙花数共有:" + count + "个");
}
}
六、珠穆朗玛峰案例
世界上最高的山峰是珠穆朗玛峰(8848.86m=8848860mm),假如我有一张足够大的纸,他的厚度是0.1mm,请问折叠多少次可以折成珠穆朗玛峰的高度?
这种不清楚要循环多少次的情况可以选用while实现。
public class demo7 {
public static void main(String[] args) {
double peak = 8848860;
double paper = 0.1;
int count = 0;
while (paper < peak){
paper *= 2;
count++;
}
System.out.println("需要折叠" + count + "次");
System.out.println("纸张的最终厚度为:" + paper);
}
}
七、密码输入系统
import java.util.Scanner;
public class demo8 {
public static void main(String[] args) {
int turePassword = 520;
Scanner sc = new Scanner(System.in);
while (true){
System.out.println("请您输入正确的密码");
int password = sc.nextInt();
if (password == turePassword){
System.out.println("登陆成功!");
break;
}
else {
System.out.println("密码错误!!!");
}
}
}
}
八、输出*号排列
public class demo9 {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 6; j++) {
System.out.print("*");
}
System.out.println();//换行
}
}
}
九、生成20个65到91之间的随机数
import java.util.Random;
public class demo10 {
public static void main(String[] args) {
Random r = new Random();
for (int i = 0; i < 20; i++) {
int number = r.nextInt( 27) + 65;
System.out.println(number);
}
}
}
十、案例:猜数字游戏
随机生成一个1-100之间的数字,提示用户猜测,猜大了提示过大,猜小了提示过小,直到猜中时结束游戏。
import java.util.Random;
import java.util.Scanner;
public class demo11 {
public static void main(String[] args) {
Random r = new Random();
int luckyNumber = r.nextInt(100) + 1;//1-100随机数
Scanner sc = new Scanner(System.in);
System.out.println("请您输入猜测的数字");
while (true){
int guessNumber = sc.nextInt();
if (guessNumber > luckyNumber){
System.out.println("您猜测的数字较大~");
} else if (guessNumber < luckyNumber) {
System.out.println("您猜测的数字较小~");
}else {
System.out.println("哇,金色传说!!!");
break;
}
}
}
}