Array01.java
public class Array01 { public static void main(String[] args){ //数组的引出 //1.定义一个数组 // a.double[] 表示是double类型的数组,数组名hens // b.{3,5,1,3.4,2,50};表示数组的值/元素,依次表示数字组的第几个元素 double[] hens = {3,5,1,3.4,2,50}; //2.遍历数组得到数组的所有元素的和,使用for // a.通过hens[]来访问数组的元素,下标是从0开始编号的 // 第一个元素就是hens[0],第2个元素就是hens[1],依次类推 // b.通过for循环就可以循环的访问数组的元素/值 // c.使用一个变量taotalWeight将各个元素累积 double totalWeight = 0; for(int i = 0;i < 6; i++){ System.out.println("第"+ (i+1) +"个元素的值=" + hens[i]); totalWeight +=hens[i]; } System.out.println("总体重=" + totalWeight + "平均体重" + (totalWeight / 6)); } }
Array02.java
import java.util.Scanner; public class Array02{ public static void main(String[] args) { //步骤 //1.创建一个double数组,大小5 Scanner myScanner = new Scanner(System.in); // (1)第一种动态分配方式 // double score[] = new double[5]; // (1)第二种动态分配方式,先声明数组,再new分配空间 double score[];//声明数组 score = new double[5];//分配内存空间,可以存放数据 //循环输入 for(int i = 0;i < score.length;i++){ System.out.println("请输入第"+ (i+1) +"个成绩"); score[i] = myScanner.nextDouble(); } //遍历数组,循环输出 for(int i = 0;i < score.length;i++){ System.out.println("第"+ (i+1) +"个成绩是" + score[i]); } } }
ArrayDetail.java
public class ArrayDetail { public static void main(String[] args) { //1.数组是多个类型数据的组合,实现对这些数据的统一管理 // int[] arr1 = {1,2,3,60,1.1};//double->int错误 // int[] arr1 = {1,2,3,60,"hello"};//String -> int错误 double[] arr2 = {1.1,2.2,3.3,60.6,100};//int->double正确 //2.数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用 String[] arr3 = {"北京","jack","milan"};//正确 //3.数组创建后,如果没有赋值,有默认值int 0,short 0,byte 0, //long 0,float 0.0,double 0.0,char \u0000,boolean false,String null short[] arr4 = new short[3];//默认为3个空间块,每块存储的0 for(int i =0;i < arr4.length;i++){ System.out.print(arr4[i]);//000 } //4.使用数组的步骤(1)声明数组并开辟空间,(2)给数组各个元素赋值(3)使用数组 //5.数组的下标是从0开始的。 //6.数组下标必须在指定范围内使用,否则报:下标越界异常,比如 //int []arr==new int[5];则有效下标为0~4 //数组的下标/索引最小是0,最大是数组长度-1 int[] arr = new int[5]; // System.out.println(arr[5]);//数据越界 //7.数组属引用类型,数组型数据是对象(object) } }
ArrayExercise01.java
public class ArrayExercise01{ public static void main(String[] args) { //思路分析 //1.定义一个数组 //2.'A' + 1 = 'B',使用for循环来赋值 //3.使用for循环输出所有元素 char[] letter = new char[26]; letter[0] = 'A'; for(int i = 0;i < letter.length;i++){ //赋值 letter[i] = (char)(letter[0] + i);//'A'+i是int,需要强制转换 //循环输出 System.out.print(letter[i] + " "); } } }
ArrayExercise02.java
public class ArrayExercise02 { public static void main(String[] args){ //思路分析 //1.定义一个int数组 //2.假定num[0]是max最大值,对应的索引为0 //3.从下标1开始遍历num数组,如果max < 当前元素,说明max不是真正的最大值 //就把max =当前元素,maxIndex=当前元素的下标。 //4.当遍历整个数组,max就是最大值,maxIndex就是最大值的下标 int[] num = {4,-1,9,10,23,321,-12,234,-239}; int max = num[0];//假定num[0]是max最大值 int maxIndex = 0;//假定maxIndex是max最大值的下标 for(int i = 1;i < num.length;i++){ if(num[i] > max){ max = num[i]; maxIndex = i; } } System.out.println("数组最大值是" + max); System.out.println("数组最大值的下标是" + maxIndex); } }
ArrayExercise03.java
public class ArrayExercise03 { public static void main(String[] args) { int[] num = {1,2,3,4,5}; int sum = 0; int avg = 0; for(int i = 0;i < num.length;i++){ sum += num[i]; avg = sum / num.length; } System.out.println(sum); System.out.println(avg); } }
ArrayAssign.java
public class ArrayAssign { public static void main(String[] args) { //基本数据类型赋值,赋值方式为值拷贝 //n2的变化不会影响到n1的值 // int n1 = 10; // int n2 = n1; // n2 = 80; // System.out.println(n1);//10 // System.out.println(n2);//80 // ==================================== //数组在默认情况下是引用传递,赋的值是地址, //赋值方式为引用赋值,是一个地址,arr2的变化会影响到arr1 int[] arr1 = {1,2,3}; int[] arr2 = arr1;//把arr1赋值给arr2 arr2[0] = 10; //看看arr1的值 System.out.println("arr1的元素"); for(int i = 0;i < 3;i++){ System.out.println(arr1[i] + " "); }//10 2 3 System.out.println("arr2的元素"); for(int i = 0;i < 3;i++){ System.out.println(arr2[i] + " "); }//10 2 3 } }
public class ArrayCopy { public static void main(String[] args) { int[] arr1 = {10,20,30}; //创建一个新的数组arr2,开辟新的数据空间 //大小为arr1.length int[] arr2 = new int[arr1.length]; //遍历arr1,把arr1每个元素拷贝到arr2对应的元素位置 for(int i = 0;i < 3;i++){ arr2[i] = arr1[i]; } //修改arr2,不会对arr1有影响 arr2[0] = 1; //输出arr2 System.out.println("====arr2的元素======"); for(int i = 0;i < 3;i++){ System.out.println(arr2[i]); }//1 20 30 System.out.println("=====arr1的元素====="); //输出arr1 for(int i = 0;i < 3;i++){ System.out.println(arr1[i]); }//10 20 30 } }
ArrayReverse.java
public class ArrayReverse { public static void main(String[] args) { //方式1:通过找规律反转 //定义数字组 int[] arr = {11,22,33,44,55,66}; //思路分析 //1.把arr[0]和arr[5]进行交换{66,22,33,44,55,11} //2.把arr[1]和arr[4]进行交换{66,55,33,44,22,11} //3.把arr[2]和arr[3]进行交换{66,55,44,33,22,11} //4.一共交换3次=arr.length / 2 //5.每次交换时,对应得到下标是arr[i]和arr[arr.length-i-1] //代码优化 int temp = 0; int len = arr.length;//计算数组的长度 for(int i = 0;i < len / 2;i++){ temp = arr[len-i-1]; arr[len-i-1] = arr[i]; arr[i] = temp; } System.out.println("======翻转后数组======"); for(int i = 0;i < len;i++){ System.out.println(arr[i] + "\t"); } //方式2:使用逆序赋值方式 int[] arr1 = {11,22,33,44,55,66}; int[] } }
ArrayReverse02.java
public class ArrayReverse02 { public static void main(String[] args) { //方式2:使用逆序赋值方式 int[] arr = {11,22,33,44,55,66}; int[] arr2 = new int[arr.length]; int temp = 0; //使用逆序赋值方式 //1.先创建一个新的数组arr2,大小为arr.length //2.逆序遍历arr,将每个元素拷贝到arr2的元素中(顺序拷贝 //3.增加一个循环变量j->0~5 for(int i = (arr.length-1),j = 0;i >= 0;i--,j++){ arr2[j] = arr[i]; } //4.for循环结束,arr2已变为逆序的数组 //5.让arr引用指向arr2数据空间,此时arr原来的数据空间就没有变量引用, //会被当做垃圾销毁 arr = arr2; System.out.println("=========arr的元素逆序赋值显示情况========="); for(int i = 0;i < arr.length;i++){ // arr[i] = arr2[i]; System.out.println(arr[i]); } } }
ArrayAdd.java
public class ArrayAdd { public static void main(String[] args) { //思路分析 //1.定义初始 数组int[] arr = {1,2,3}; //2.定义一个新的数组int[] arrNew = new int[arr.length+1]; //3.遍历arr数组,依次将arr的元素拷贝到arrNew数组 //4.将4赋值给arrNew[arrNew.length-1]=4;把4赋值给arrNew最后一个元素 //5.让arr指向arrNew;arr=arrNew;那么原来arr数组就被销毁 int[] arr = {1,2,3}; int[] arrNew = new int[arr.length+1]; for(int i = 0;i < arr.length;i++){ arrNew[i] = arr[i]; } arrNew[arrNew.length-1] = 4; arr = arrNew; System.out.println("=======arr扩容后的元素情况========"); for(int i = 0;i <arr.length;i++){ System.out.println(arr[i]); } } }
ArrayAdd02.java
import java.util.Scanner; public class ArrayAdd02 { public static void main(String[] args) { //思路分析 //1.定义初始 数组int[] arr = {1,2,3}; //2.定义一个新的数组int[] arrNew = new int[arr.length+1]; //3.遍历arr数组,依次将arr的元素拷贝到arrNew数组 //4.将4赋值给arrNew[arrNew.length-1]=4;把4赋值给arrNew最后一个元素 //5.让arr指向arrNew;arr=arrNew;那么原来arr数组就被销毁 //6.创建一个Scanner可以接受用户输入 //7.因为用户什么时候退出不确定,使用do while+break来控制 Scanner myScanner = new Scanner(System.in); //初始化数组 int[] arr = {1,2,3}; do{ int[] arrNew = new int[arr.length+1]; for(int i = 0;i < arr.length;i++){ arrNew[i] = arr[i]; } System.out.println("请输入你要添加的元素?"); int addNum = myScanner.nextInt(); //把addNum赋值给arrNew最后一个元素 arrNew[arrNew.length-1] = addNum; arr = arrNew; System.out.println("=======arr扩容后的元素情况========"); for(int i = 0;i <arr.length;i++){ System.out.print(arr[i] + "\t"); } //问用户是否继续 System.out.println("是否继续添加y/n?"); char key = myScanner.next().charAt(0); if(key == 'n'){//如果输出n,就结束。 break; } }while(true); System.out.println("你退出了添加"); } }
ArrayReduce.java
import java.util.Scanner; public class ArrayReduce { public static void main(String[] args) { Scanner myScanner = new Scanner(System.in); int[] arr = {1,2,3,4,5}; do{ int[] arrNew = new int[arr.length-1]; for(int i = 0;i < arr.length-1;i++){ arrNew[i] = arr[i]; } arr = arrNew; System.out.println("=====缩减后的数组是======"); for(int i = 0;i < arr.length;i++){ System.out.print(arr[i] + "\t"); } System.out.println("\n" + "是否继续缩减?y/n"); char key = myScanner.next().charAt(0); if(key == 'n'){ break; }else if(arr.length == 1){ System.out.println("===警告:不能再缩减==="); break; } }while(true); } }
BubbleSort.java
public class BubbleSort { public static void main(String[] args) { //化繁为简,先死后活 int[] arr = {24,69,80,57,13,19}; int temp = 0;//用于辅助交换的一个变量 //将多轮排序使用外层循环包括起来即可 for(int j = 0;j < arr.length-1; j++){//外层循环4次 for(int i = 0;i<arr.length-j-1;i++){// //如果前面的数>后面的数,就交换 if(arr[i] > arr[i+1]){ temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; } } System.out.println("\n=====第"+ (j + 1) +"轮====="); for(int i = 0;i<arr.length;i++){ System.out.print(arr[i] + "\t"); } } // //第一轮 // for(int i = 0;i<arr.length-1;i++){//4次比较 // //如果前面的数>后面的数,就交换 // if(arr[i] > arr[i+1]){ // temp = arr[i]; // arr[i] = arr[i+1]; // arr[i+1] = temp; // } // } // System.out.println("=====第1轮====="); // for(int i = 0;i<arr.length;i++){ // System.out.print(arr[i] + "\t"); // } // //第二轮 // for(int i = 0;i<arr.length-2;i++){//3次比较 // //如果前面的数>后面的数,就交换 // if(arr[i] > arr[i+1]){ // temp = arr[i]; // arr[i] = arr[i+1]; // arr[i+1] = temp; // } // } // System.out.println("\n=====第2轮====="); // for(int i = 0;i<arr.length;i++){ // System.out.print(arr[i] + "\t"); // } // //第三轮 // for(int i = 0;i<arr.length-3;i++){//2次比较 //如果前面的数>后面的数,就交换 // if(arr[i] > arr[i+1]){ // temp = arr[i]; // arr[i] = arr[i+1]; // arr[i+1] = temp; // } // } // System.out.println("\n=====第3轮====="); // for(int i = 0;i<arr.length;i++){ // System.out.print(arr[i] + "\t"); // } // //第四轮 // for(int i = 0;i<arr.length-4;i++){//1次比较 //如果前面的数>后面的数,就交换 // if(arr[i] > arr[i+1]){ // temp = arr[i]; // arr[i] = arr[i+1]; // arr[i+1] = temp; // } // } // System.out.println("\n=====第4轮====="); // for(int i = 0;i<arr.length;i++){ // System.out.print(arr[i] + "\t"); // } } }
SeqSearch.java
import java.util.Scanner; public class SeqSearch { public static void main(String[] args) { String[] arr = {"白眉鹰王","金毛狮王","紫衫龙王","青翼蝠王"}; Scanner myScanner = new Scanner(System.in); System.out.println("请输入名称"); String wang = myScanner.next(); //遍历数组,逐一比较,如果有,提示信息并退出 //编程思维经典方法 int index = -1; for(int i = 0;i < arr.length;i++){ //比较字符串 equals //如果要找的名字就是当前元素 if(wang.equals(arr[i])){ System.out.println("数列中包含此名称,下标为" + i); //把i保存到index index = i; break; } } if(index == -1){ System.out.println("没有此名称"); } } }
TwoDimensionalArray01.java
public class TwoDimensionalArray01 { public static void main(String[] args) { //什么是二维数组: //1.从定义形式看int[][] //2.原来一维数组的每个元素是一维数组,就构成二维数组。 int[][] arr = {{0,0,0,0,0,0},{0,0,1,0,0,0}, {0,2,0,3,0,0},{0,0,0,0,0,0}}; //关于二维数组的关键概念 // 1. System.out.println("二维数组的元素个数=" + arr.length);//4 // 2.二维数组的每个元素是一维数组,所以如果需要得到每个一维 // 数组的值,还需要再次遍历 // 3.访问第(i+1)个一维数组的第j+1个值,arr[i][j]; // 举例访问元素3,即是访问第3个一维数组的第4个值arr[2][3]; System.out.println("第3个一维数组的第4个值=" + arr[2][3]);//3 //输出二维图形 for(int i = 0;i <arr.length;i++){//遍历二维数组的每个元素 //遍历二维数组的每个元素(数组) //解读 //1.arr[i]表示二维数组的第i+1个元素,比如arr[0] //2.arr[i].length 得到对应的每个一维数组的长度 for(int j = 0;j < arr[i].length;j++){ System.out.print(arr[i][j] + " "); } System.out.println();//换行 } } }
TwoDimensionalArray02.java
public class TwoDimensionalArray02 { public static void main(String[] args) { //int[][] arr = new int[2][3]; int[][] arr; arr = new int[2][3]; arr[1][1] = 8; //遍历二维数组arr for(int i = 0;i < arr.length;i++){ for(int j = 0;j < arr[i].length;j++){//对每个一维数组进行遍历 System.out.print(arr[i][j] + " "); } System.out.println(); } } }
TwoDimensionalArray03.java
public class TwoDimensionalArray03 { public static void main(String[] args) { //二维数组有三个一维数组,每个一维数组的元素是不一样的 //创建二维数组,一个有3个一维数组,但是每个一维数组都没有开空间 int[][] arr = new int[3][]; for(int i = 0;i < arr.length;i++){//遍历arr每一个一维数组 // 给每一个一维数组开空间 new // 如果没有给一维数组new,那么arr[i]就是空值null arr[i] = new int[i + 1]; //遍历一维数组,并给一维数组的每个元素赋值 for(int j = 0;j < arr[i].length;j++){ arr[i][j] = i + 1; } } //遍历arr输出 System.out.print("===arr数组元素遍历===\n"); for(int i = 0;i < arr.length;i++){ for(int j = 0;j < arr[i].length;j++){ System.out.print(arr[i][j] + " "); } System.out.println(); } } } //结果: //1 //2 2 //3 3 3
TwoDimensionalArray05.java
public class TwoDimensionalArray05 { public static void main(String[] args) { int arr[][] = {{4,6},{1,4,5,7},{-2}}; int sum = 0; System.out.println("===遍历数组的结果是===="); for(int i = 0;i < arr.length;i++){ for(int j = 0;j < arr[i].length;j++) { sum += arr[i][j]; System.out.print(arr[i][j] + " "); } System.out.println(); } System.out.println("===遍历数组的和是===="); System.out.println("sum=" + sum); } }
YangHui.java
public class YangHui { public static void main(String[] args) { int[][] arr = new int[20][]; for(int i = 0;i < arr.length;i++){//遍历arr的每个元素 //给每个一维数组(行)开空间 arr[i] = new int[i + 1]; //给 每个一维数组(行)赋值 for(int j = 0;j < arr[i].length;j++){ //每一行的第一个元素和最后一个元素都是1 if(j == 0 || j == arr[i].length-1){ arr[i][j] = 1; }else{//中间的元素 arr[i][j] = arr[i-1][j] +arr[i-1][j-1]; } } } //输出杨辉三角 System.out.println("=====杨辉三角10行======"); for(int i = 0;i < arr.length;i++){ for(int j = 0;j < arr[i].length;j++){ System.out.print(arr[i][j] + " "); } System.out.println(); } } }
Homework01.java
public class Homework01 { public static void main(String[] args) { // String strs[] = {'a','b','c'};//错误,char不能赋值给String // String[] strs = {"a","b","c"};//正确 // String[] strs = new String{"a""b""c"};//错误 String[] strs2 = new String[]{"a","b","c"};//正确 // String[] strs = new String[3]{"a","b","c"};//错误 } }
Homework02.java
public class Homework02 { public static void main(String[] args){ String foo = "blue"; boolean[] bar = new boolean[2];//bar[0]默认false,bar[1]默认false. if(bar[0]){ foo = "green"; } System.out.println(foo);//blue } }
Homework03.java
public class Homework03 { public static void main(String[] args){ int num = 1; while(num < 10) { System.out.println(num); if(num > 5) { break; } num +=2; }//结果1 3 5 7 } }
Homework04.java
import java.util.Scanner; public class Homework04 { public static void main(String[] args) { // 已知有个升序的数组,要求插入一个元素,该数组顺序依然是 // 升序,比如:[10,12,45,90],添加23后,数组为[10,12,23,45,90] // 思路 // 本质是 数组扩容+定位 // 1.确定添加数插入到哪个位置 // 2.然后扩容 //先定义原数组 int[] arr = {10,12,45,90}; int insertNum = 23; int index = -1;//index就是要插入的位置 //遍历arr数组,如果发现insertNum <= arr[i],说明i就是要插入的位置 //使用index保留index = i; //如果遍历完后,没有发现insertNum <= arr[i],说明index = arr.length //即添加到arr的最后 for(int i = 0;i < arr.length;i++){ if(insertNum <= arr[i]){ index = i; break;//找到位置后,就退出 } } //判断index的值 if(index == -1){ index = arr.length; } //扩容 int[] arrNew = new int[arr.length + 1]; //将arr的元素拷贝到arrNew,并且跳过index位置 for(int i = 0,j = 0;i < arrNew.length;i++){ if(i != index){//不等于情况下可以把arr的元素拷贝到arrNew arrNew[i] = arr[j]; j++; }else{//i这个位置就是要插入的数 arrNew[i] = insertNum; } } //让arr指向arrNew,原来的数组,就成为垃圾,被销毁 arr = arrNew; System.out.println("index=" + index); System.out.println("======插入后,arr数组的元素情况======"); for(int i = 0;i < arr.length;i++){ System.out.print(arr[i] + "\t"); } } }
Homework05.java
public class Homework05 { public static void main(String[] args) { int[] arr = new int[10];//默认全是0 //(int)(Math.random() * 100) + 1 生成一个随机数1-100 for(int i = 0;i < arr.length;i++){ arr[i] = (int)(Math.random() * 100) + 1; } System.out.println("====arr的元素情况==="); for(int i = 0;i < arr.length;i++){ System.out.print(arr[i] + " "); } System.out.println("\n====arr的元素情况(倒叙打印)==="); for(int i = arr.length - 1;i >= 0;i--){ System.out.print(arr[i] + " "); } //平均值、最大值和最大值的下标 double sum = arr[0]; int maxIndex = -1; int max = arr[0]; for(int i = 1;i < arr.length;i++){ if(max < arr[i]){ max = arr[i]; maxIndex = i; } } System.out.println("\n数组的最大值是" + max); System.out.println("数组的最大值下标" + maxIndex); System.out.println("数组的和是" + sum); System.out.println("数组的平均值是" + sum / (arr.length)); int number = 0; //查看数组中是否有8,按照顺序查找 int index = -1; for(int i = 0;i < arr.length;i++){ if(arr[i] == 8){ System.out.println("===找到8了==="); index = i; break; } } if(index == -1){ System.out.println("===找不到8了==="); } } }
Homework06.java
public class Homework06 { public static void main(String[] args) { char[] arr1 = {'a','z','b','c'}; char[] arr2 = arr1; arr1[2] = '韩'; for(int i = 0;i<arr2.length;i++){ System.out.println(arr1[i] + "," + arr2[i]); } } }
Homework07.java
public class Homework07 { public static void main(String[] args) { //冒泡排序 //要求从小到大排序 int[] arr = {20,-1,80,2,890,7}; int temp = 0;//辅助交换 for(int i = 0;i < arr.length - 1;i++){//外层循环(轮) for(int j = 0;j < arr.length - 1 - i;j++){//每轮的比较次数 //从大到小排序 条件写成if(arr[j] < arr[j+1]) if(arr[j] > arr[j+1]){ temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } System.out.println("\n===排序后==="); for(int i = 0;i < arr.length;i++){ System.out.print(arr[i] + "\t"); } } }