循环的选择:知道循环的次数或者知道循环的范围就使用for循环,其次再使用while循环
猜数字
- 程序自动生成一个1-100之间的随机数,在代码中使用键盘录入去猜出这个数字是多少?
- 要求:使用循环猜,一直猜中为止。
- 思路分析:
- 1-100之间的随机数(random函数)
- 一直猜中为止:不知道猜测多少次才中(循环的次数不确定)
public class guess {
public static void main(String[] args) {
// 程序自动生成一个1-100之间的随机数,在代码中使用键盘录入去猜出这个数字是多少?
//要求:使用循环猜,一直猜中为止。
Random random = new Random();
// int number = random.nextInt(100);
// 表示随机生成一个0-99的数
// 随机生成一个1-100的数
int number = random.nextInt(100)+1;
Scanner scanner = new Scanner(System.in);
// 不知道循环的次数或者不知道循环的范围,可以使用while循环
while (true){
System.out.println("输入猜测的数字:");
int i = scanner.nextInt();
// 猜对了就跳出循环,猜不对继续猜
if (i > number){
System.out.println("你猜的数字大了");
}else if (i < number){
System.out.println("你猜的数字小了");
}else {
System.out.println("你猜对了");
break;
}
}
}
}
逢7过
-
游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说过:过
- 需求:使用程序在控制台打印出1-100之间的满足逢七必过规则的数据
-
分析:
- 1-100之间的数字:知道了循环的范围——使用for循环
- 数字满足包含7或者是7的倍数就输出过(写出这个条件的判断语句即可)
public class fengqiguo {
public static void main(String[] args) {
/*
逢7过:
游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说过:过
需求:使用程序在控制台打印出1-100之间的满足逢七必过规则的数据
*/
for(int i = 1; i<= 100 ; i++){
// 排除7的倍数:i%7 ==0;
// 排除十位上的数是7的:i /10%10 == 7;(i/10可以得出十位上的数,再%10就是判断是否符合规则)
// 排除个位上是7的:i%10 == 7;
if (i % 7 == 0 || i /10%10 == 7 || i % 10 == 7 )
{
// 包含7或者是7的倍数时就输出过,并跳出循环
System.out.println("过");
continue; // 跳过当前循环
}
// 不包含7或者是7的倍数时就正常输出数字
System.out.println(i);
}
}
}
回文数的判断
- 思路分析:
- 算出倒序的数,然后与原来的数比较
public class huiwenshu {
public static void main(String[] args) {
int x=12291;
int temp = x;
int num = 0;
while(x != 0){
// 拿到最左边的数字
int a = x%10;
// 把原来的数去掉最左边一位
x = x/10;
// 计算倒序的数
num = num * 10 + a;
}
// 比较判断
if (num == temp){
System.out.println("是回文数");
}else {
System.out.println("不是回文数");
}
}
}
计算一个数的平方根
- 需求:键盘录入一个大于等于2的整数 x ,计算并返回 x 的 平方根 。结果只保留整数部分 ,小数部分将被舍去 。
- 利用循环实现
- 思路:利用列举法找出规律:
- 1的平方=1
- 2的平方=4
- 3的平方=9
- 4的平方=16
- …
- 思路:利用列举法找出规律:
import java.util.Scanner;
public class pingfanggen {
public static void main(String[] args) {
// 键盘录入一个大于等于2的整数 x ,计算并返回 x 的 平方根 。
// 结果只保留整数部分 ,小数部分将被舍去 。
Scanner scanner = new Scanner(System.in);
System.out.print("录入的数字:");
int number = scanner.nextInt();
for (int i = 1;i <= number-1 ;i++){
//从1开始循环,拿着数字的平方跟原来的数字进行比较
//如果小于number,那么继续往后判断
if (i * i == number){
//如果相等,那么当前数字就是平方根
System.out.println("number 的平方根是" + i);
break;
}else if (i * i > number){
//如果大于的,那么前一个数字就是平方跟的整数部分
System.out.println("number 的平方根的整数部分是" + (i-1));
break;
}
}
}
}
- 使用java的工具类实现
- 在Java中,你可以使用Scanner类来从键盘获取输入,然后使用Math.sqrt()函数来计算平方根。
- 由于Math.sqrt()返回的是一个double类型的值,你可以使用类型转换或者Math.floor()、(int)来舍去小数部分,只保留整数部分。
import java.util.Scanner;
public class SquareRootExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 提示用户输入一个大于等于2的整数
System.out.print("请输入一个大于等于2的整数: ");
int x = scanner.nextInt();
// 检查输入是否大于等于2
while (x < 2) {
System.out.println("输入的数字小于2,请重新输入: ");
x = scanner.nextInt();
}
// 计算平方根并只保留整数部分
double sqrt = Math.sqrt(x);
int result = (int) sqrt; // 或者使用 Math.floor(sqrt) 但在这里结果是一样的,因为sqrt是正的
// 输出结果
System.out.println("整数部分的平方根是: " + result);
// 关闭Scanner
scanner.close();
}
}
判断一个数是否为质数
- 需求: 键盘录入一个正整数 x ,判断该整数是否为一个质数。
- 思路:理解什么是质数,然后根据质数的特征进行代码的编写
import java.util.Scanner;
public class zishu {
public static void main(String[] args) {
// 键盘录入一个正整数 x ,判断该整数是否为一个质数。
//质数:质数(也称为素数)是大于1的自然数,并且除了1和它本身以外不再有其他因数的数。换句话说,质数只有两个正因数:1和它本身。
//如果一个整数只能被1和本身整除,那么这个数就是质数。否则这个数叫做合数
//7 = 1 * 7 质数,13也是质数
//8 = 1 * 8 2 * 4 合数
Scanner scanner = new Scanner(System.in);
System.out.print("录入数字:");
int number = scanner.nextInt();
//定义一个变量,表示标记
//标记着number是否为一个质数
//true: 是一个质数
//false : 不是一个质数
//表示最初就认为number是一个质数
boolean flag = true;
// 2是最小的质数
// 注意:当number=2的时候,是不符合i< number的条件的,所以没有进入循环语句
for (int i=2 ; i<number;i++){
if (number % i == 0){
flag = false;
break;
}
}
if (!flag){
System.out.println("这个数不是质数");
}else {
System.out.println("这个数是质数");
}
}
}