二维数组代码练习
package Learn5;
public class Demo01 {
//二维数组的操作
public static void main(String[] args) {
//声明二维数组
//数据类型[][] 数组名; 或者 数据类型 数组名[][];
int[][] nums1;
char[][] chars1;
//分配空间
//数组名 = new 数据类型[数组长度][数组长度];
//数组名 = new 数据类型[数组长度][];
nums1 = new int[3][4];
chars1 = new char[2][4];
//赋值
//数组名[下标][下标] = 数据;
nums1[0][0] = 10;
nums1[0][1] = 20;
nums1[0][2] = 20;
nums1[0][3] = 20;
nums1[1][0] = 30;
nums1[1][1] = 40;
nums1[1][2] = 50;
nums1[1][3] = 60;
nums1[2][0] = 70;
nums1[2][1] = 80;
nums1[2][2] = 90;
nums1[2][3] = 100;
chars1[0][0] ='q';
chars1[0][1] ='w';
chars1[0][2] ='e';
chars1[1][0] ='r';
chars1[1][1] ='t';
chars1[1][2] ='y';
chars1[1][3] ='o';
//操作数据
//数组名[下标][下标]
//遍历二维数组
for(int i =0;i<nums1.length;i++){
// System.out.println(nums1[i]);
for(int j=0;j<nums1[i].length;j++){
System.out.print(nums1[i][j]+" ");
}
System.out.println();
}
}
}
package Learn5;
public class Demo02 {
public static void main(String[] args) {
//二维数组声明、分配空间合并写
//数据类型[][] 数组名 = new 数据类型[长度][长度];
//数据类型 数组名[][] = new 数据类型[长度][长度];
int[][] nums1 = new int[3][5];
//二维数组声明、分配空间、赋值合并写
//数据类型[][] 数组名 = new 数据类型[][]{{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},....,{数据1,数据2,...,数据n}};
//数据类型 数组名[][] = new 数据类型[][]{{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},....,{数据1,数据2,...,数据n}};
int[][] nums2 = new int[][]{{1,2,4},{6,8,9},{77,23,45}};
int[][] nums3 = new int[][]{{1,2,4,55,9},{6,8,9},{77,23,45,55,77,44,49,33}};
//二维数组的声明、分配空间、赋值简写
//数据类型[][] 数组名= {{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},....,{数据1,数据2,...,数据n}};
//数据类型 数组名[][]= {{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},....,{数据1,数据2,...,数据n}};
int[][] nums4 = {{1,2,4},{6,8,9},{77,23,45}};
int[][] nums5 = {{1,2,4,55,9},{6,8,9},{77,23,45,55,77,44,49,33}};
}
}
package Learn5;
public class Demo03 {
//遍历二维数组
public static void main(String[] args) {
int[][] nums = {{1,2,3},{4,5},{7,8,9,0},{22}};
for(int i =0;i<nums.length;i++){
// System.out.println(nums[i]);
for(int j =0;j<nums[i].length;j++){
System.out.print(nums[i][j]+" ");
}
//换行
System.out.println();
}
}
}
package Learn5;
import java.util.Scanner;
public class Demo04 {
//已知有3个班级各5名学员,请使用二维数组计算各个班级的总成绩
public static void main(String[] args) {
//创建Scanner类对象
Scanner scanner = new Scanner(System.in);
//准备一个长度为3的double类型的二维数组(这个二维数组的元素都是长度为5的double类型的数组)
double[][] scores = new double[3][5];
//赋值:通过键盘录入向数组中存储数据,使用循环实现
for(int i =0;i<scores.length;i++){
System.out.println("************************第"+(i+1)+"个班************************");
for(int j=0;j<scores[i].length;j++){
System.out.println("请输入第"+(j+1)+"个学生的成绩:");
scores[i][j]=scanner.nextDouble();
}
}
//求各个班级的成绩之和
System.out.println("************************成绩统计************************");
for(int i =0;i<scores.length;i++){
//声明一个变量用来累加班级学生成绩之和
double sum = 0;
for(int j=0;j<scores[i].length;j++){
sum+=scores[i][j];
}
System.out.println((i+1)+"班总成绩:"+sum);
}
}
}
三维数组
package Learn5;
public class Demo05 {
public static void main(String[] args) {
//声明一个三维数组并赋值
int[][][] nums = {{{11,22},{33,44,55}},{{56},{77,99},{99,77,66,44,55,33}}};
//遍历三维数组
for(int i =0;i<nums.length;i++){
for(int j=0;j<nums[i].length;j++){
for(int k =0;k<nums[i][j].length;k++){
System.out.print(nums[i][j][k]+" ");
}
System.out.println();
}
}
}
}
Arrays类的使用
Arrays.sort
package Learn4;
import java.util.Arrays;
public class ArraysDemo01 {
public static void main(String[] args) {
int[] nums1 = {25, 64, 11, 89, 32, 40, 77, 55};
System.out.println("数组排序前:");
for (int a : nums1) {
System.out.print(a + " ");
}
System.out.println();
//对数组进行升序排序,使用Arrays.sort()方法实现
Arrays.sort(nums1);
System.out.println("数组排序后:");
for (int a : nums1) {
System.out.print(a + " ");
}
System.out.println();
System.out.println("-------------------------------------------");
int[] nums2 = {25, 64, 11, 89, 99, 88, 32, 40, 77, 55};
System.out.println("数组排序前:");
for (int a : nums2) {
System.out.print(a + " ");
}
System.out.println();
Arrays.sort(nums2, 1, 6);
System.out.println("数组排序后:");
for (int a : nums2) {
System.out.print(a + " ");
}
System.out.println();
}
}
Arrays.equals
package Learn4;
import java.util.Arrays;
public class ArraysDemo02 {
public static void main(String[] args) {
int[] nums1 = {11,33,44,55,99};
int[] nums2 = {11,33,44,99,55};
System.out.println(nums1);
System.out.println(nums2);
//比较两个数组中的元素是否完全一样,使用Arrays类中的equals()方法可以实现
boolean result1 =Arrays.equals(nums1,nums2);
System.out.println("nums1数组和nums2数组完全相同:"+result1);
}
}
Arrays.toString
package Learn4;
import java.util.Arrays;
public class ArraysDemo04 {
public static void main(String[] args) {
int[] nums1 = {11,22,55,66,77};
System.out.println(Arrays.toString(nums1));
//fill(数组名,数据):将数组中所有元素值替换为指定的数据
Arrays.fill(nums1,99);
System.out.println(Arrays.toString(nums1));
System.out.println("-------------------------------");
int[] nums2 = {11,22,33,44,55,66,77,88,99};
System.out.println(Arrays.toString(nums2));
//fill(int[] a, int fromIndex, int toIndex, int val)将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。
Arrays.fill(nums2,3,6,100);
System.out.println(Arrays.toString(nums2));
}
}
Arrays.copyOf
package Learn4;
import java.util.Arrays;
public class ArraysDemo05 {
public static void main(String[] args) {
int[] nums = {11,22,33,44,55,66,77,88,99};
int[] newNums1 =Arrays.copyOf(nums,3);
System.out.println(Arrays.toString(newNums1));
int[] newNums2 =Arrays.copyOf(nums,9);
System.out.println(Arrays.toString(newNums2));
int[] newNums3=Arrays.copyOf(nums,11);
System.out.println(Arrays.toString(newNums3));
System.out.println("------------------");
int[] newNums4 = Arrays.copyOfRange(nums,3,6);//赋值元素是,结束索引的元素不包括
System.out.println(Arrays.toString(newNums4));
}
}
Arrays.binarySearch
package Learn4;
import java.lang.reflect.Array;
import java.util.Arrays;
public class ArraysDemo06 {
public static void main(String[] args) {
int[] nums = {11,55,33,22,77,44,11,56,22,88,66};
//查找数据22
//int binarySearch(int[] a,int key)使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。必须在进行此调用之前对数组进行排序(通过 sort(int[]) 方法)。如果没有对数组进行排序,则结果是不确定的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。
// int index1 =Arrays.binarySearch(nums,22);
// System.out.println(index1);
//对数组进行排序
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
int index1 =Arrays.binarySearch(nums,22);
System.out.println(index1);
//查找一个不存在的数据,会返回一个负值
int index2 =Arrays.binarySearch(nums,29);
System.out.println(index2);
int index3 =Arrays.binarySearch(nums,3,7,22);
System.out.println(index3);
}
}
冒泡排序
package Learn3;
public class Demo01 {
//冒泡排序
public static void main(String[] args) {
//准备一个数组
int[] nums = {56,42,11,78,93,44,20,63,81,5};
//遍历数组
System.out.println("排序前数组:");
for(int i =0;i< nums.length;i++){
System.out.print(nums[i]+" ");
}
System.out.println();
//使用冒泡排序对数组进行升序排序
//外层循环变量控制比较的轮数
for(int i =0;i< nums.length-1;i++){
//内层循环变量控制每一轮的比较次数
for(int j =0;j< nums.length-1-i;j++){
//比较相邻的两个元素,如果前面的元素比后面的元素大,交换位置
if(nums[j]>nums[j+1]){
//交换
int temp = nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
//遍历数组
System.out.println("排序后数组:");
for(int i =0;i< nums.length;i++){
System.out.print(nums[i]+" ");
}
}
}
package Learn3;
import java.util.Scanner;
public class Demo02 {
//使用冒泡排序对输入的5名学员成绩进行降序排列
public static void main(String[] args) {
//创建Scanner对象
Scanner scanner=new Scanner(System.in);
//准备数组存储5名学生的成绩
double[] scores = new double[5];
//通过循环获取5名学生成绩存储在数组中
for(int i =0;i<scores.length;i++){
System.out.println("请输入第"+(i+1)+"位学生的成绩:");
scores[i]=scanner.nextDouble();
}
//遍历数组
System.out.println("排序前数组中的成绩:");
for(double score :scores){
System.out.print(score+" ");
}
System.out.println();
//使用冒泡排序对数组进行降序排序
//外层循环变量控制比较轮数
for(int i =0;i< scores.length-1;i++){
//内层循环变量控制每一轮的比较次数
for(int j =0;j< scores.length-1-i;j++){
//比较
if(scores[j]<scores[j+1]){
//交换位置
double temp = scores[j];
scores[j]=scores[j+1];
scores[j+1]=temp;
}
}
}
//遍历数组
System.out.println("排序后数组中的成绩:");
for(double score :scores){
System.out.print(score+" ");
}
}
}
选择排序
package Learn3;
public class Demo03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 给定一个数组a[]
int[] a = new int[] { 23, 2, 11, 32, 43, 28 };
// 遍历一遍数组
System.out.println("遍历数组a[]");
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
// 选择排序从大到小
System.out.println("下面进行从大到小的选择排序");
for (int i = 0; i <= a.length - 2; i++) {
for (int j = i + 1; j <= a.length - 1; j++) {
if (a[i] < a[j]) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
// 遍历一遍排序后的数组
System.out.println("遍历经过选择排序从大到小排序后的数组a[]");
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}