循环的选择:知道循环的次数或者知道循环的范围就使用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("这个数是质数");}}
}