条件判断与循环:
--求n的阶层
- 主要使用知识点:if-else和for循环
public void getN() {
Scanner sc = new Scanner(System.in);
// 判断输入的是否是整数
if (sc.hasNextInt()) {
System.out.println("请输入一个数:");
//获取用户输入的值
int n = sc.nextInt();
double sum = 1;
if (n > 0) {
for (int i = 1; i <= n; i++) {
sum *= i;
}
} else {
System.out.println("负数没有阶层!");
}
System.out.println(sum);
}
sc.close();
}
-- 猜数字游戏
- 主要使用知识点:if-elseif-else和while()循环以及部分swing的相关知识点
public void numRiddle() {
int num = 0; // 输入值
int min = 0; // 最小值
int max = 100; // 最大值
int count = 1; // 猜的次数
int answer = (int) (Math.random() * 100 + 1); // 随机数
try {
String str = JOptionPane.showInputDialog("我给了你一个1~100之间的整数,你猜猜是多少呢?");
// 将String类型转换为整形
num = Integer.parseInt(str);
while (num != answer) {
count++;
if (num < answer) {
min = num;
// 输入弹出框
str = JOptionPane.showInputDialog("猜错了,在" + min + "-" + max + "之间");
num = Integer.parseInt(str);
} else if (num > answer) {
max = num;
str = JOptionPane.showInputDialog("猜错了,在" + min + "-" + max + "之间");
num = Integer.parseInt(str);
}
}
JOptionPane.showMessageDialog(null, "恭喜你答对了,你一共猜了" + count + "次");
} catch (Exception e) {
// 退出系统
System.exit(0);
}
}
-- 最大公约数和最小公倍数
- 主要是使用知识点:for循环和if语句
public void exNum() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入两个数:");
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int max = 0;// 最大公约数
int min = 0;// 最小公倍数
// 获取最大公约数
for (int i = 1; i < (num1 < num2 ? num2 : num1); i++) {
if (num1 % i == 0 && num2 % i == 0) {
max = i;
}
}
// 最小公倍数(两数相乘,除以最大公约数)
min = (num1 * num2) / max;
System.out.println("最大公约数:" + max + ";最小公倍数:" + min);
sc.close();
}
-- Craps赌博游戏:两颗色子
- 主要是使用知识点:if-elseif-elseif-else和do-while
- 该题存在嵌套循环和嵌套条件判断
public void game() {
int gameMoney = 1000; // 玩家初始金额
int onePoints = 0; // 第一次的点数
int points1 = 0; // 第一个色子的点数
int points2 = 0; // 第二个色子的点数
int points = 0; // 两个色子点数的和
int count = 0; // 甩色子的次数
boolean flag = false;
Scanner sc = new Scanner(System.in);
do {
count++;
System.out.println("你的总资产:" + gameMoney);
int bet = 0;
do {
System.out.println("请下注:");
bet = sc.nextInt();
} while (bet > 0 && bet > gameMoney);
points1 = (int) (Math.random() * 6 + 1); // 第一个色子
points2 = (int) (Math.random() * 6 + 1); // 第二个色子
onePoints = points1 + points2;
if (onePoints == 7 || onePoints == 11) {
gameMoney += bet;
System.out.println("恭喜你胜出了!当前点数是:" + onePoints);
} else if (onePoints == 3 || onePoints == 12 || onePoints == 2) {
gameMoney -= bet;
System.out.println("不好意思你输了,回家卖房吧!当前点数是:" + points);
} else {
flag = true;
System.out.println("该局不输不赢,游戏继续!当前点数是:" + points);
while (flag) {
points1 = (int) (Math.random() * 6 + 1); // 第一个色子
points2 = (int) (Math.random() * 6 + 1); // 第二个色子
points = points1 + points2;
if (points == 7) {
gameMoney -= bet;
flag = false;
System.out.println("不好意思你输了,回家卖房吧!当前点数是:" + points);
} else if (points == onePoints) {
gameMoney += bet;
flag = false;
System.out.println("恭喜你胜出了!当前点数是:" + points);
} else {
System.out.println("该局不输不赢,游戏继续!当前点数是:" + points);
}
}
}
} while (gameMoney > 0);
System.out.println("游戏结束!");
System.out.println("你一共甩了" + count + "次");
sc.close();
}
-- 求1-100之间的素数
- 主要使用知识点:
1.for循环、if条件判断、break跳出本次循环、return返回以及Math.sqrt()求根号方法
2.方法调用
// 求1-100之间的素数
public static void suShu() {
for (int i = 1; i < 100; i++) {
// 调用tongSuShu(),获取返回的boolean类型的值
boolean flag = tongSuShu(i);
if (flag) {
System.out.print(i + ",");
}
}
}
public static boolean tongSuShu(int i) {
boolean flag = true;
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
flag = false;
// 跳出本次循环
break;
}
}
//返回布尔类型的值
return flag;
}
-- 九九乘法表
- 主要使用知识点:
public void multiplicationTable() {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
// 格式化输出
System.out.printf("%d*%d=%d\t", j, i, j * i);
}
System.out.println("");
}
}