(1)
public class ArrayDemo1 {
public static void main(String[] args){
//使用数组维护多个学生的成绩
//创建数组 数据类型[] 变量/数组名称/引用 = new 数据类型[length];
double[] scoreArray = new double[3];
//在数组中,每个数据元素都有索引,index(0-length-1)
//访问(输出)数组元素:数组名称[index]
double firstData = scoreArray[0];
System.out.println("第一个数据" + firstData); //访问第一个数组元素,并打印出.------0.0
System.out.println("第二个数组元素:" + scoreArray[1]);//访问第二个数组元素,并打印出
//添加数组元素(修改同理)
scoreArray[0] = 100;
}
}
(2)
public class ArrayDemo2 {
public static void main(String[] args) {
int[] arry = new int[5];
arry[0] = 100;
arry[1] = 200;
//获得数组长度 变量.length
System.out.println("获得数组的长度" + arry.length);
//循环遍历数组元素-----while
int index = 0;
while (index < arry.length) {
System.out.println(arry[index++]);
}
//循环遍历数组元素-----for(普通for循环)
for (int index = 0; index < arry.length; index++) {
System.out.println(arry[index++]);
}
int count = 1;
for(int a:arry){
System.out.println("第" + count + "个数据元素是" + a);
count++;
}
}
}
(3)
public class ArrayDemo3 {
public static void main(String[] rags){
String[] nameArray = new String[5]; //创建数组
int length = nameArray.length; //获得数组长度
//新增数据
nameArray[0] = "张三";
nameArray[1] = "李四";
nameArray[2] = "王五";
nameArray[3] = "赵六";
nameArray[4] = "陈七";
//遍历查看,优先使用for
for (String name : nameArray) { //若用增强for,可用nameArray.for
System.out.println("学生的姓名是:" + name);
}
}
}
(4)
public class ArrayDemo4 {
public static void main(String[] args){
//可以两步走创建语法
int[] array;
array = new int[3];
//可静态初始化数组,数组类型[] 数组名称 = {数据1,数据2,...数据n};
int[] array = {1,2,3};
//对静态初始数组,若两步走,要加new 数据类型[]
int[] array;
array = new int[]{1,2,3};
}
}
(5)
public class ArrayDemo5 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入学生个数:");
int num = input.nextInt();
double sum = 0;
double[] scoreArray = new double[num];
for (int i = 1; i <= num; i++) {
System.out.println("请录入第" + (i) + "个学生的成绩");
double score = input.nextDouble();
sum += score;
scoreArray[i-1] = score; //录入的每个成绩存入数组中
}
System.out.println("---------------" );
System.out.println("学生的总分为:" + sum);
//循环遍历打印
int count = 1;
for (double studentscore : scoreArray) {
System.out.println("第" + (count++) + "个学生的成绩为:" + studentscore);
}
input.close();
}
}
(6)
public class ArrayDemo6 {
public static void main(String[] args){
//基本数据类型比较的是数据 引用数据类型比较的是内存地址值
//比较2个数组元素是否一致,数组也是引用型,所有的引用数据类型都可以用equals
int[] array1 = new int[]{1,2,3}; //不分两步写可省略new int[]
int[] array2 = {1,2,3};
System.out.println(array1 == array2); //false,因为两个数组的内存地址值不同
System.out.println(array1.equals(array2) ); //false,也不行
int length1 = array1.length;
int length2 = array2.length;
if(length1 != length2){
System.out.println("这2个数组元素不同");
return;
}
//比较相同索引下的元素是否一致
for (int index = 0; index < length1; index++) {
if(array1[index] != array2[index]){
System.out.println("这2个数组元素不同");
return;
}
}
System.out.println("这2个数组元素相同");
}
}
(7)
public class ArrayDemo07 {
//修改class名可直接修改,然后alt+回车,选择rename file。或者快捷键shift+F6
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请录入学生个数:");
int studentNum = input.nextInt();
int[] scoreArray = new int[studentNum];
for (int i = 0; i < studentNum; i++) {
System.out.println("请录入第" + (i+1)+ "个学生成绩:");
int studentscore = input.nextInt();
scoreArray[i] = studentscore;
}
int max = scoreArray[0];
int min = scoreArray[0];
//使用普通for 数组名.length+for
for (int index = 0; index < scoreArray.length; index++) {
max = Math.max(max,scoreArray[index]); //也可不用三元运算符
min = Math.min(min,scoreArray[index]);
}
System.out.println("成绩最高分为:" + max);
System.out.println("成绩最低分为:" + min);
input.close();
}
}
---------------------------------------------------------------------------------------------------------------------------------也可直接在一个for里求max min
public class ArrayDemo07methond2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请录入学生个数:");
int studentNum = input.nextInt();
int[] scoreArray = new int[studentNum];
int max = 0;
int min = 0;
for (int i = 0; i < studentNum; i++) {
System.out.println("请录入第" + (i + 1) + "个学生成绩:");
int studentscore = input.nextInt();
scoreArray[i] = studentscore;
if(i == 1){
max = studentscore;
min = studentscore;
continue;
}
max = Math.max(max,scoreArray[i]); //
min = Math.min(min,scoreArray[i]);
}
input.close();
}
}
(8)
//若被转入元素的数组空间充足(要判断)
public class ArrayDemo08 {
public static void main(String[] args){
//数组元素是连贯的
String[] arr1 = new String[5];
arr1[0] = "a";
arr1[1] = "b";
arr1[2] = "c";
String[] arr2 = {"1"};
//需要将arr2的数据存储到arr1里,核心是找到arr1里第一个null值出现的地方
int length = arr1.length;
int index = 0;
for(;index < length;index++){
if(arr1[index] == null){
break;
}
}
//赋值
for (String s : arr2) {
if( s== null){ //数组二若出现null,则后面全是null
break;
}
arr1[index++] = s;
}
//遍历数组的所有元素
//Array java.util.Arrays 提供了很多操作数组元素的功能
//将数组里的元素转换成字符串进行输出 Arrays.toString(数组名)
System.out.println("arr1的元素" + Arrays.toString(arr1));
}
}
//若被转入元素的数组空间不充足(要判断)--------------------------------需要手动扩容
public class ArrayDemo08 {
public static void main(String[] args){
//数组元素是连贯的
String[] arr1 = new String[5];
arr1[0] = "a";
arr1[1] = "b";
arr1[2] = "c";
String[] arr2 = {"1","2","3"};
//找到arr1里第一个null值出现的地方
int length = arr1.length;
int index = 0;
for(;index < length;index++){
if(arr1[index] == null){
break;
}
}
//判断arr1剩余空间是否充足
int leftSpace = length - index;
int length2 = arr2.length;
if(length2 > leftSpace){ //空间不足,需要手动扩容,创建新的数组,扩大的空间自己定义
String[] newArray = new String[index+length2];
for(int i = 0;i < index;i++){
newArray[i] = arr1[i]; //把要扩容的数组的元素移到新的数组中
}
arr1 = newArray; //引用类型赋值,赋的是内存地址值,这样就完成了arr1的扩容
}
for (String s : arr2) {
if( s== null){
break;
}
arr1[index++] = s;
}
System.out.println("arr1的元素" + Arrays.toString(arr1));
}
}
(9)
public class ArrayDemo09 {
public static void main(String[] args){
int[] array = {1,2,3,4,5};
//以上手动扩容过程可用一句话执行
array = Arrays.copyOf(array,array.length*2); //数组扩容
System.out.println(Arrays.toString(array)); //数组元素输出
}
}
(10)
public class ArrayDemo10 {
public static void main(String[] args){
//数组元素是连贯的,空间是固定的。删除数组元素后,其后若有非空元素。则向前循环移动。(非空元素前不会有空元素,即连贯)
//如下:若删除数组元素a。
String[] array = {"a","b","c",null};
int length = array.length;
//找到a元素所在的索引位置
for(int index = 0;index < length;index++){
if("a".equals(array[index])){
array[index] = null; //可省略,因为接下来右边的元素要循环向左移动
for(int j = index;j < length - 1;j++){ //遵循数组元素连贯原则,将非空元素左移
array[j] = array[j + 1];
}
array[length-1] = null; //最后一个元素左移之后,把最后一个元素也赋值为空
}
}
System.out.println("删除之后" + Arrays.toString(array));
}
}
(11)
public class ArrayDemo11 {
public static void main(String[] args){
int[] array = {89,100,0,78};
Arrays.sort(array);
System.out.println(Arrays.toString(array));
}
}
//结果为{0,78,89,100}
(12)
public class ArrayDemo12 {
public static void main(String[] args){
//创建二维数组
int[][] array = new int[3][4]; //初始化二维数组,代表array最多有三个元素(一维数组),每个一维数组元素最多4个
//获得数组元素 数组名称[index]
int[] first = array[0]; //二维数组的元素是一维数组
int[] second = array[1];
int[] third = array[2];
System.out.println("获得二维数组的第一个元素:" + Arrays.toString(first)); //[0,0,0,0]
//将二维数组元素转成字符串 Arrays.deepToString(数组名)
System.out.println(Arrays.deepToString(array)); //{[0,0,0,0],[0,0,0,0],[0,0,0,0,]}
//修改第一个一维数组的第一个数据 100
//array[0][0] = 100;
int[] first1 = array[0];
first1[0] = 100; //分两步也可以
//遍历数组
for(int index1 = 0;index1 < array.length;index1++){
for(int index2 = 0;index2 < array[index1].length;index2++){
System.out.println("第" + index1 +"个一维数组的第" + index2 + "个元素为:" + array[index1][index2] );
}
}
//用增强for遍历
int count1 = 1;
for (int[] ints : array) { //array.for
int count2 = 1;
for (int anInt : ints) { //ints.for
System.out.println("第" + count1 +"个一维数组的第" + count2 + "个元素为:" + anInt );
count2++;
}
count1++;
}
}
}
(13)
public class ArrayDemo13 {
public static void main(String[] args) {
String[][] strArray = new String[3][]; //初始化二维数组,并声明3个一维数组。
// 但接下来要初始化每一个一维数组,因为现在每一个一维数组元素为null,要操作会报空指针
strArray[0] = new String[1]; //第一个一维数组为1个长度
strArray[1] = new String[2];
strArray[2] = new String[3];
}
}
(14)
public class ArrayDemo14 {
public static void main(String[] args){
int[][] a; //先声明
a = new int[][]{ {},{}, {} }; //再赋值
}
(15)
public class ArrayDemo15 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("录入班级个数:");
int classroomNum = input.nextInt();
String[][] nameArray = new String[classroomNum][];
for (int num = 1; num <= classroomNum; num++) {
System.out.println("请录入第" + num + "个班级的学生个数:");
int studentNum = input.nextInt();
nameArray[num - 1] = new String[studentNum]; //初始化每一个一维数组!!!很重要
for (int num1 = 1; num1 <= studentNum; num1++) {
System.out.println("请录入第" + num + "个班级第" + num1 + "个学生的姓名:");
String name = input.next();
nameArray[num - 1][num1 - 1] = name;
}
}
//打印输出每个班级每个学生的姓名
for (int index = 0; index < nameArray.length; index++) {
for (int index1 = 0; index1 < nameArray[index].length; index1++) {
System.out.println("第"+(index+1)+"个班级第"+(index1+1) +"个学生的姓名:"+nameArray[index][index1] );
}
}
input.close();
}
}


