1. 循环高级
1.1 无限循环
package com.angus.loopAdvanced.infiniteLoop_1;public class note {public static void main(String[] args) {//无限循环:循环一直停不下来//for循环//while循环 ->最常用,因为不知道循环的范围或者次数//do...while循环// for (;;){
// System.out.println("学习");
// }// while (true){
// System.out.println("学习");
// }// do {
// System.out.println("学习");
// } while (true);//无限循环的下面不能再写其他的代码了,因为执行不到System.out.println("^^");}
}
1.2 跳转控制语句
package com.angus.loopAdvanced.jumpControlStatement_2;public class demo1 {public static void main(String[] args) {//1.跳过某次循环for (int i = 1; i <= 5; i++) {if (i == 3) {//跳过这次循环,继续下次循环continue;}System.out.println(i);}System.out.println("^^");}
}
package com.angus.loopAdvanced.jumpControlStatement_2;public class demo2 {public static void main(String[] args) {//2.结束整个循环for (int i = 1; i <= 5; i++) {System.out.println(i);if (i == 3) {//结束整个循环break;}}System.out.println("^^");}
}
package com.angus.loopAdvanced.jumpControlStatement_2;public class test1 {public static void main(String[] args) {/*朋友聚会的时候可能会玩一个游戏:逢7过游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说过:过需求:使用程序在控制台打印出1-100之间的满足逢七必过规则的数据*///随笔//自己做的分析太混乱了,先模仿教学视频java老师的,之后再形成自己的//分析://个位7 十位7 7倍数//1 2 3 4 5 6 过 8 9 10 11 12 13 过 15 16 过 18 19 20 过...//69 过 过 ... 80//1.得到1-100之间的每一个数//开始: 1//结束: 100for (int i = 1; i <= 100; i++) {//2.判断每一个数字,如果符合规范,就打印过,如果不符合就打印真实的数字if (i/1%10 == 7 || i/10%10 == 7 || i%7 == 0) {System.out.println("过");continue;}System.out.println(i);}System.out.println("^^");}
}
package com.angus.loopAdvanced.jumpControlStatement_2;import java.util.Scanner;public class test2 {public static void main(String[] args) {/*需求:键盘录入一个大于等于2的整数 x ,计算并返回 x 的 平方根 。结果只保留整数部分 ,小数部分将被舍去 。*///分析://平方根 16的平方根4// 4的平方根2//10//1 * 1 = 1 < 10//2 * 2 = 4 < 10//3 * 3 = 9 < 10//4 * 4 = 16 > 10//推断: 10的平方根是在3~4之间//20//1 * 1 = 1 < 20//2 * 2 = 4 < 20//3 * 3 = 9 < 20//4 * 4 = 16 < 20//5 * 5 = 25 > 20//推断: 10的平方根是在4~5之间//在代码当中//从1开始循环,拿着数字的平方跟原来的数字进行比较//如果小于的,那么继续往后判断//如果相等,那么当前数字就是平方根//如果大于的,那么前一个数字就是平方根的整数部分//1.键盘录入一个整数Scanner scanner = new Scanner(System.in);System.out.println("请输入一个整数");int number = scanner.nextInt();//2.从1开始循环判断//开始: 1 结束: numberfor (int i = 1; i <= number; i++) {//用i * i 再跟number进行比较//怎么比,用关系运算符if (i*i==number){System.out.println(i + "就是" + number + "的平方根");//随笔//案例代码可以自己照着写也可以复制粘贴,建议有些自己写[大框架],有些复制粘贴[小细节],//老师的思路分析复制粘贴就行了,//不然太费时间了而且思维也会在跟着打字的同时被禁锢,//要的是变通的思维不是盲目的思维//老师的分析下面可以自己再解析分析//这也是锻炼自己的思维//一旦找到了,循环就可以停止了,后面的数字就不需要再找了,提高代码的运行效率。break;} else if (i * i > number) {System.out.println((i - 1) + "就是" + number + "平方根的整数部分");break;}}System.out.println("^^");}
}
package com.angus.loopAdvanced.jumpControlStatement_2;import java.util.Scanner;public class test3 {public static void main(String[] args) {//随笔//思维要具有结构化,流程化//如果听一下就打一下,思维很容易混乱//所以之前的我才会建议先听完一整个知识点再去整理笔记//不只是整理笔记,还有重新理一下思路,再写一次代码加分析//但是随笔可以随时整理//需求:键盘录入一个正整数 x ,判断该整数是否为一个质数。//质数://如果一个整数只能被1和本身整除,那么这个数就是质数。否则这个数叫做合数//所以想要找到质数我们只要将它本身和1排除在外,//再看看在它和1之间有没有能够将它整除的数,//有就不是质数,没有就是质数//7 = 1 * 7 质数//8 = 1 * 8 2 * 4 合数//分析://1.键盘录入一个正整数//numberScanner sc = new Scanner(System.in);System.out.println("请输入一个正整数");int number = sc.nextInt();//9//定义一个变量,表示标记//标记着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){// 9 % 2 = 1flag = false;
//System.out.println(number + "不是一个质数");break;}/* else {
System.out.println(number + "是一个质数");}}*/
//只有当这个循环结束了,表示这个范围之内所有的数字都判断完毕了
//此时才能断定number是一个质数}if(flag){System.out.println(number + "是一个质数");}else{System.out.println(number + "不是一个质数");}System.out.println("^^");}
}
package com.angus.loopAdvanced.jumpControlStatement_2;public class test3_3 {public static void main(String[] args) {//test3的优化//随笔//计算器快捷键: win+R输calc// 100000// 2 ~ 99999//循环的次数:将近10万次//推荐一个简化的思路//81//1 * 81//3 * 27//9 * 9//以81的平方根9,为中心//而且假设 a * b = 81//那么a和b中,其中有一个必定是小于等于9的。//另一个是大于等于9的。//我们要找的就是那个小于等于9的//假设,都是大于9 --- 9.1 * 9.1 > 81//假设,都是小于9 --- 8.9 * 8.9 < 81//其中一个数字一定是小于等于平方根//另外一个数字一定是大于等于平方根int number = 81;//如果这个范围之内,所有的数字都不能被number整除//那么number就一定是一个质数。
/*for (int i = 2; i <= number的平方根; i++) {}
*/System.out.println("^^");}
}
package com.angus.loopAdvanced.jumpControlStatement_2;
//1.导包import java.util.Random;public class test4 {public static void main(String[] args) {//先获取一个随机数。//范围:0~10//2.创建对象Random random = new Random();//3.生成随机数//判断技巧://在小括号中,书写的是生成随机数的范围//这个范围一定是从0开始的。//到这个数-1结束//口诀:包头不包尾,包左不包右for (int i = 0; i < 5; i++) {int number = random.nextInt(10);// 0 ~ 9System.out.println(number);}System.out.println("^^");}
}
package com.angus.loopAdvanced.jumpControlStatement_2;import java.util.Random;public class test5 {public static void main(String[] args) {//需求://随机数范围:1~100//创建对象Random r = new Random();//生成随机数int number = r.nextInt(100) + 1;//1 ~ 100System.out.println(number);//解析://1.100-1=99//2.99+1=100//3.r.nextInt(100)//4.r.nextInt(100) + 1//秘诀//用来生成任意数到任意数之间的随机数 7 ~15//1.让这个范围头尾都减去一个值,让这个范围从0开始 -7 0~8//2.尾巴+1 8 + 1 = 9//3.最终的结果,再加上第一步减去的值。/* Random r = new Random();int number = r.nextInt(9) + 7;// 7 ~ 15// 0 ~ 8 + 7System.out.println(number);*///解析://1.15-7=8//2.8+1=9//3.r.nextInt(9)//4.r.nextInt(9) + 7//总结://1.要求的范围->大范围值-小范围值=值1//2.值1+1=值2//3.值2的随机数表达式//4.值2的随机数表达式+小范围值System.out.println("^^");}
}
package com.angus.loopAdvanced.jumpControlStatement_2;
//导包Random,导包Scanner
import java.util.Random;
import java.util.Scanner;public class test6 {public static void main(String[] args) {//需求:程序自动生成一个1-100之间的随机数字,//使用程序实现猜出这个数字是多少?//分析://1.生成一个1-100之间的随机数字//2.猜这个数字是多少//3.如果猜一次猜不中,就需要不断猜,直到猜中为止//4.先写里面再写外面,//意思就是先写判断再写循环//意思就是判断一次后再不断重复判断//判断一次的情况就是先写里面的意思//不断判断就是再写外面的意思//1.生成一个1-100之间的随机数字//创建Random对象Random r = new Random();//生成随机数 需要写在死循环的外面,不然就会一直生成新的随机数int number = r.nextInt(100) + 1;
// //2.猜这个数字是多少
// Scanner sc = new Scanner(System.in);
// System.out.println("请输入你要猜的数字");
// //键盘录入
// int guessNumber = sc.nextInt(); //需要放在死循环的里面,这样才不会一直重复打印,原因就是死循环一旦执行到一条语句就会无限执行下去//不知道循环次数或范围用whilewhile (true){ //死循环,无限循环//2.猜这个数字是多少Scanner scanner = new Scanner(System.in);System.out.println("请输入你要猜的数字");//键盘录入 需要放在死循环的里面,这样才不会一直重复打印,原因就是死循环一旦执行到一条语句就会无限执行下去int guessNumber = scanner.nextInt();if (guessNumber > number) {System.out.println("大了");} else if (guessNumber < number) {System.out.println("小了");} else {System.out.println("猜中了");break; //猜中了就break跳出死循环}}//随笔
//反思
//代码还是得自己独立写一遍,理解理解代码原理
//还是自己分析吧,这样更乱了,而且还把自己绕晕了
//最重要的是自己独立分析才能巩固学的知识点
//之前的方案pass pass pass
//那和抄袭没什么区别了都我发现
//还是得自己再重新独立写一遍才能真正掌握
//不过就是有点慢服了...
//我就当是磨刀不误砍柴工了
//那两句话得提醒一下自己了
//1.学我者生,似我者寄
//2.你看懂了,不去写,其实你还是不懂。
//重新简单总结一下自己的学习方法: 就是老师写完一个练习就跟着他写这个练习,写完后再继续后面的优化改进什么的
System.out.println("^^");}
}
package com.angus.loopAdvanced.jumpControlStatement_2;import java.util.Random;
import java.util.Scanner;public class test6_6 {public static void main(String[] args) {//加一个保底活动Random r = new Random();int number = r.nextInt(100) + 1;int count = 0;while (true){Scanner scanner = new Scanner(System.in);System.out.println("请输入你要猜的数字");int guessNumber = scanner.nextInt();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;}}System.out.println("^^");}
}
2. 数组
2.1 数组介绍
package com.angus.array.introductionToArray_1;public class note {public static void main(String[] args) {//什么是数组呢?//数组指的是一种容器,可以用来存储同种数据类型的多个值//但也不用限定死,还要考虑隐式转换//例如:int类型的数组容器(boolean错 byte对 short对 int对 double错)// double类型的数组容器(byte对 int对 long对 double对)//建议:容器的类型和存储的类型保持一致System.out.println("^^");}
}
2.2 数组的定义与静态初始化
package com.angus.array.definitionAndDynamicInitializationOfArray_2;public class note {public static void main(String[] args) {//知识点一//数组的定义//以前定义变量时: int a = 0; -> int a 叫做定义, = 0 叫做赋值//定义数组就比定义变量多了个[]//定义数组有两种格式,常用第一种//格式一: 数据类型 [] 数组名//例子: int [] array//格式二: 数据类型 数组名 []//例子: int array []//数组定义之后只有一个名字,容器还没出现//知识点二//数组的初始化//初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程//数组初始化的两种方式//静态初始化//动态初始化//数组的静态初始化//简化格式: 数据类型[] 数组名 = {元素1,元素2,元素3...};//例子: int[] array1 = {1, 2, 3};// double[] array2 = {1.1, 1.2 ,1.3};System.out.println("^^");}
}
package com.angus.array.definitionAndDynamicInitializationOfArray_2;public class demo1 {public static void main(String[] args) {//需求1:定义数组存储5个学生的年龄int[] arr1 = {11,12,13,14,15};//需求2:定义数组存储3个学生的姓名String[] arr2 = {"aadad","阿达","大大"};//需求3:定义数组存储4个学生的身高 1.93double[] arr3 = {1.5,1.6,1.7,1.8}; // [D@b4c966a 数组的地址值->表示数组在内存中的位置 有4个数->表示数组的长度System.out.println(arr3);//扩展://解释一下地址值的格式含义 [D@b4c966a//[ :表示当前是一个数组//D:表示当前数组里面的元素都是double类型的//@:表示一个间隔符号。(固定格式)//b4c966a:才是数组真正的地址值,(十六进制)//平时我们习惯性的会把这个整体叫做数组的地址值。System.out.println("^^");}
}
2.3 数组元素访问
package com.angus.array.arrayElementAccess_3;public class note {public static void main(String[] args) {//数组元素访问//格式: 数组名[索引];//索引:也叫做下标,角标//索引的特点:从0开始,逐个+1增长,连续不断System.out.println("^^");}
}
package com.angus.array.arrayElementAccess_3;public class demo1 {public static void main(String[] args) {//题目//利用索引对数组中的元素进行访问//获取数组里面的元素//格式: 数组名[索引]//获取数组中的元素//可以直接获取//也可以间接使用变量获取//获取数组中的第一个元素int[] arr = {1,2,3,4,5};//1.直接获取System.out.println(arr[0]);//2.间接获取int a = arr[0];System.out.println(a);System.out.println("^^");}
}
package com.angus.array.arrayElementAccess_3;public class demo2 {public static void main(String[] args) {//题目//把数据存储到数组当中//格式: 数组名[索引] = 具体数据/变量;//细节:一旦覆盖之后,原来的数据就不存在了。int[] arr = {1,2,3,4,5};arr[0] = 1000; //把1000赋值给arr的0索引int a = arr[0];System.out.println(a);System.out.println("^^");}
}
未完待续...