1.1 for 循环
1.2 while 循环
while循环和for循环的比较
-
他俩在技术上没有任何的区别, 能用for的地方 可以使用while替换, 能用while的地方 也可以使用for来替换。
-
所有程序员的使用循环的习惯,都是这样的, 把for循环用在 有明确范围的地方, while循环 使用在 没有明确范围的地方。
1.3 dowhile 循环
格式
do{ 循环体; }while (条件判断);
do{
System.out.println("helloworld");
}while (true);
int i = 1;
do{
System.out.println("HelloWorld");
i++;
}while(i<=3);
案例:键盘录入一个 数字, 判断数字是否在1-100之间, 如果不是就重新录入,直到你录入1-100为止。
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 循环 优化上面的代码, 优化重复度。 但是 此处的这个while 还有重复。
int a;
do{
a = sc.nextInt();
}while (a<1 || a>100); // 执行流程 第一次执行 不判断。 从第二次开始 先判断后执行。
// 因为 95%以上的程序员 在遇到这种情况的时候 想不起来使用dowhile
while (true){
int b = sc.nextInt();
if (b >=0 && b<=100){
break;
}
}
}
}
1.4 循环中断语句
break; 用来结束循环的。 只能写在 switch和 循环之中。
for (int i =1; i<=10; i++){
System.out.println("helloworld"); //1 2 3 4 5 6
if (i==6){
break;
}
}
continue; 继续 总共循环n次, continue只把其中一次断掉 后续的循环继续。 只能写在 循环中。
for (int i = 1; i<=365; i++){
if (i %7 ==0 ){
continue;
}
System.out.println(i+"工作"); //1 2 3 4 5 6 8 9..
}
2 Random
用来生成随机数的。
import java.util.Random;
public class Demo7 {
public static void main(String[] args) {
//Random 用来生成随机数的。
Random r = new Random();
int a = r.nextInt(10); // 生成一个 0-10之间的数 [0 -10 )
System.out.println(a);
int b = r.nextInt(100); // [0-100)
int c = r.nextInt(100) +1; // [0-99] + 1 = [1-100]
}
}
3 综合案例:猜数字小游戏
import java.util.Scanner;
import java.util.Random;
public class Demo6 {
public static void main(String[] args) {
Random r = new Random();
Scanner sc = new Scanner(System.in);
int num = r.nextInt(100)+1; //生成一个随机数 1-100之间
int small = 1;
int big = 100;
while (true){
int a = sc.nextInt();
if (a>num){
big = a;
System.out.println("您猜的大了 应该在" + small +" - "+ big+ "之间");
}else if (a< num){
small =a;
System.out.println("您猜的小了 应该在" + small +" - "+ big+ "之间");
}else {
System.out.println("恭喜您答对了");
break;
}
}
}
}
4 idea
4.1 idea软件提高开发效率:
notepad 记事本 editplus 高级记事本。 idea 高级开发工具 (今后开发就用他了。)
4.2 idea版本:
2017版 最多支持到 jdk10 2018版 最多支持到 jdk11, jdk12不支持。 2019版 支持jdk12 jdk13 不支持jdk14 2020版 都支持。
4.3 管理java文件的目录结构:
总目录, 以后 所有的idea产生的 所有的文件 基本上都会在这里面。 D:developideaProjects 项目目录 模块目录 包目录 java文件
4.4 idea的快捷键:
psvm + 回车 快速生成main方法 sout + 回车 快速生成输出语句 Alt + 1 打开 隐藏工程目录结构 Alt + 4 打开 隐藏控制台
Ctrl + D 向下复制一行 Ctrl + X 剪切当前行 Ctrl + alt + L 格式化代码 Alt+ enter 代码修正提示 Ctrl + / 批量加入单行注释,再按一次就是取消 Ctrl + shift + / 批量加入多行注释,再按一次就是取消 Alt + shift + ↑ 上移当前行 Alt + shift + ↓ 下移当前行
true.if 5.fori 某某.var
4.5 idea 操作模块
4.6 idea 操作项目
5 数组5.1 数组的归属体系
数据类型 基本类型(基本数据) 整数 byte short int long 小数 float double 布尔 boolean 字符 char 引用类型(综合数据) 数组 ——顾名思义 : 一组数据 所以数组是用来 盛 一组数据(多个数据)的 类 接口
5.2 定义格式
第一种
数据类型[] 名称 = new 数据类型[数组的长度];
int[] arr = new int[3]; // 0 0 0
System.out.println(arr); // [I@50cbc42f
// 这是 数组的内存地址
第二种:
int[] arr = new int[]{3,5,8}; // 数组 array
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
第三种
int[] brr = {3,5,8,6,2};
System.out.println(brr[0]);
System.out.println(brr[1]);
System.out.println(brr[2]);
System.out.println(brr[3]);
System.out.println(brr[4]);
// 注意事项:
//int a = 10;
int a ;
a = 10;
int[] arr;
arr = new int[3];
int[] brr;
brr = new int[]{3,7,9};
int[] crr;
//crr = {5,6,7}; //编译报错
5.3 数组的访问
索引(角标): 数组容器里面的内容 是有编号的, 从0开始 到 长度-1 , 只能通过编号去访问。
int[] arr = new int[3]; System.out.println(arr[0]); //0 arr[0] =10; System.out.println(arr[0]); //10
5.4 数组的内存图
一个数组的内存图
int[] arr = new int[3]; System.out.println(arr); // 0xabc123 arr[0] = 10; System.out.println(arr); // 0xabc123
两个数组的内存图
int[] arr = new int[3]; System.out.println(arr[0]); //0 int[] brr = new int[3]; brr[0] = 10; System.out.println(arr[0]); //0
两个变量指向同一个数组的内存图
int[] arr = new int[3]; System.out.println(arr[0]); //0 int[] brr = arr; brr[0] = 10; System.out.println(arr[0]); //10
数组常见的问题
1: 空指针异常
所有的引用类型 最常见的一个异常了
//为什么会出现这个异常呢 : 用null去调用了内容 int[] arr = null; System.out.println(arr[0]); //NullPointerException
2:索引越界异常
数组最常见的异常
// 为什么会出现这个异常呢: 访问数组的索引 是数组没有的
int[] arr = {10,20,30};
//System.out.println(arr[-1]); //ArrayIndexOutOfBoundsException
//System.out.println(arr[100]); //ArrayIndexOutOfBoundsException
数组的遍历
//遍历:对容器里面的元素 一个一个的依次展示出来。
//int[] arr = {5,7,9,3,1};
//遍历方式一: 代码太重复
//遍历方式二 :就解决了重复问题。
int[] arr = {5,7,9,3,1,4,5654,56,67,45,3,342,342,342,354,76,8,897,9,67,54,4,342,324,234,43,54,65,7,87,98,80};
//for (int i = 0; i < 数组的长度; i++) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
练习题目
案例1: 定义一个数组 求数组里面的最大值 int[] arr = {6,7,4,3,9,5,7,8}; // 打印最大值
案例2: 定义一个数组 求数组里面所有元素的和。
int[] arr = {6,7,4,3,9,5,7,8}; // 打印 和案例3: 定义一个数组, 打印某个元素在数组中第一次出现的索引。。 int[] arr = {6,7,4,3,9,5,7,8}; // 打印7这个数 在数组中第一次出现的索引 //打印 1 因为 7第一次出现的位置 是1索引
案例4: 键盘录入6个数 存入到数组中。 把数组中的最大值和最小值去除掉之后 求平均值。
// 键盘录入6个数 存入到数组中。 把数组中的最大值和最小值去除掉之后 求平均值。
练习答案
案例1: 定义一个数组 求数组里面的最大值
int[] arr = {6,7,4,3,9,5,7,8}; // 打印最大值
int leitai = arr[0];
for (int i = 1; i < arr.length; i++) {
if(arr[i] > leitai){
leitai = arr[i];
}
}
System.out.println(leitai);
案例2: 定义一个数组 求数组里面所有元素的和。
int[] arr = {6,7,4,3,9,5,7,8}; // 打印 和
int sum =0;
for (int i = 0; i < arr.length; i++) {
sum+=arr[i];
}
System.out.println(sum);
案例3: 定义一个数组, 打印某个元素在数组中第一次出现的索引
int[] arr = {6,7,4,3,9,5,7,8};
// 打印 9这个数 在数组中第一次出现的索引
// 打印 4
Scanner sc = new Scanner(System.in);
int anInt = sc.nextInt();
int[] arr = {6,7,4,3,9,5,7,8};
for (int i = 0; i < arr.length; i++) {
if(arr[i] == anInt){
System.out.println(i);
break;
}
}
案例4: 键盘录入6个数 存入到数组中。 把数组中的最大值和最小值去除掉之后 求平均值。
// 键盘录入6个数 存入到数组中。 把数组中的最大值和最小值去除掉之后 求平均值。
Scanner sc = new Scanner(System.in);
int[] arr = new int[6];
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
// 求平均值 : (和 - 最大值 - 最小值 )/(个数-2)
int sum = arr[0];
int max = arr[0];
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
sum+=arr[i];
if (arr[i]>max){
max = arr[i];
}
if (arr[i] < min){
min = arr[i];
}
}
System.out.println((sum-max-min)/(arr.length-2.0));


