循环高级
无线循环
循环一直停不下来
for(;;){
System.out.println("学习");
}
while(true){
System.out.println("学习");
}
do{
System.out.println("学习");
}while(true);
注意事项
无限循环的下面不能再写其他代码了,因为循环永远停不下来,那么下面的代码永远执行不到!
跳转控制语句
在循环的过程中,跳到其他语句上执行
练习:小老虎吃包子
小老虎吃包子,第三个包子有虫子,跳过。
//1.跳出某一次循环
for(int i = 1; i <= 5;i++){
if(i == 3 ){
//跳出本次循环
continue;
}
System.out.println("小老虎在吃第" + i +"个包子");
}
小老虎吃包子,第三个包子吃完不吃了
//2.结束整个循环
for(int i = 1; i <= 5;i++){
System.out.println("小老虎在吃第" + i +"个包子");
if(i == 3 ) {
//结束整个循环
break;
}
}
1.continue:跳出本次循环,继续执行下次循环
2.break:结束整个循环
练习
练习:逢7过
从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说:过
需求:使用程序在控制台打印出1~100之间的满足逢七过的规则数据
//1.得到1~100之间的每一个数字
int i = 1;
for(;i <= 100;i++){
//2.判断每一个数字,如果符号规则,就打印过,不符合规则打印真是数字
if(i % 7 == 0 || i % 10 == 7 || i % 10 / 10 == 7){
System.out.println("过");
continue;
}
System.out.println(i);
}
练习:求平方根
需求:键盘录入一个大于等于2的整数X,计算并返回X的平方根
结果只保留整数部分,小数部分将被舍去。
/*在代码当中
从1开始循环,拿着数字的平方根跟原来的数字进行比较
如果小于的,那么继续往后判断
如果相等的,那么当前数字就是平方根
如果大于的,那么前一个数字就是平方根的整数部分
*/
//1.键盘录入一个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int number = sc.nextInt();
//2.从1开始循环判断
//开始:1 ;结束:number
for(int i =1 ;i <= number; i++){
if(i * i == number){
System.out.println(i + "就是" + number + "的平方根");
//一旦找到,循环就可以停止了,后面的数字就不需要再找,提高代码的运行效率
break;
}else if(i * i > number){
System.out.println((i - 1) + "就是" + number + "平方根的整数部分");
break;
}
}
练习:求质数
需求:键盘录入一个正整数X,判断该整数是否为一个质数
package test;
import java.util.Scanner;
public class test2 {
public static void main(String[] args) {
//方法一:
//质数:如果一个数只能被1和本身整除,那么这个数就是质数,否则它就是合数
//1.键盘输入一个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个正整数");
int number = sc.nextInt();
//定义一个变量,表示标记
//标记这number是否为一个质数
//true:是一个质数
//false:不是一个质数
//表示最初就认为number是一个质数
boolean flag = true;
//2.判断是否是质数
//从2开始判断,一直判断到number - 1为止
//看这个范围之内,有没有数字可以被number整除
for(int i = 2; i < number; i++){
// i 依次表示这个范围之内的每一个数字
// 看number是否能被i整除就可以了
if(number % i == 0){
flag = false;
//System.out.println(number + "不是一个质数!");
break;
}/*else{
System.out.println(number + "是一个质数");
}*/
}
//只有当这个循环结束了,表示这个范围之内的所有数字都判断完毕了
//此时才能判断number是一个质数
if(flag){
System.out.println(number + "是一个质数");
}else{
System.out.println(number + "不是一个质数");
}
//方法二思路:
//100000
//2 ~ 99999
//循环次数,将近十万次
/*
* 81
* 1 * 81
* 3 * 27
* 9 * 9
* 以81的平方根9为中心
* 而且假设 a * b = 81
* 那么a和b中,其中有一个必定是小于等于9
* 另外一个是大于等于9的
*
* 假设,都是大于9-------9.1 * 9.1 > 81
* 假设,都是小于9-------8.9 * 8.9 < 81
* 其中一个数字一定是小于等于平方根
* 另外一个数字一定是大于等于平方根
*
* int number = 100
* 如果这个范围内,所有的数字都不能被number整除
* 那么number就一定是质数
* for (int i = 2; i <= number的平方根; i++){
*
* }
* */
}
}
获取随机数
Java帮我们写好一个类叫Random,这个类就可以生成一个随机数
使用步骤:
1.导包-----Random这个类在哪
import java.util.Random;
导包的动作必须出现在类定义上边。
2.创建对象-----表示我要开始用Random这个类了
Random r = new Random ();
上面这个格式里面,只有r是变量名,可以变,其他的都不允许变
3.生成随机数-----真正开始干活了
int number = r.nextInt(随机数的范围)
上面这个格式里面,只有number是变量名,可以变,其他都不允许发生改变
//2.创建对象
Random r = new Random();
//3.生成随机数
//判断技巧
//在小括号里,书写的是生成随机数的范围
//这个范围一定是从0开始的
//到这个数-1就结束
//口诀:包头不包尾,包左不包右
int number = r.nextInt(100);
System.out.println(number);
/*
* 随机生成任意数到任意数之间的随机数 如 7~15
* 1.让这个范围的头尾都减去一个值,让这个范围从0开始 0~8
* 2.尾巴+1 8 + 1 = 9
* 3.最终的结果,再加上第一步减去的值
*
*
* Random r = new Random();
* int number = r.nextInt(9)+7; 7~15
* 0 ~ 8 + 7
* System.out.println(number);
* */
练习:猜数字
package test;
import java.util.Random;
import java.util.Scanner;
public class test4 {
public static void main(String[] args) {
//需求:程序自动生成一个1~100之间的随机数字,使用程序实现猜出这个数字是多少?
//扩展小需求:如果三次猜不中,直接提示猜中了
//注意点:
//生成随机数的代码int number = r.next(100)+1;
//不能写在循环的里面的,否则每一次都会产生一个新的随机数
//分析
//1.生成一个1~100之间的随机数字
//计数器
int count = 0;
Random r = new Random();
int number = r.nextInt(100) + 1;
System.out.println(number);
//2.键盘录入要猜这个数字的多少
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要猜的数字:");
while (true) {
int guessNumber = sc.nextInt();
//3.判断两个数字给出不同的结果
//猜的数字大了,提示:大了
//猜的数字小了,提示:小了
//猜的数字一样,提示:猜中了
count++;
if(count == 3){
System.out.println("猜中了!");
break;
}
if (guessNumber > number) {
System.out.println("大了!");
} else if (guessNumber < number) {
System.out.println("小了!");
} else {
System.out.println("猜中了!");
break;
}
}
}
}