Java(七)
数组操作
遍历数组
1.数组的遍历可以使用for循环来实现;
使用for循环遍历时,定义int i=0,因为索引是从0 开始的,继续循环的条件是 i 2.数组的循环还可以使用for each 直接迭代数组的每个元素; 在for(int n : array)中,变量n是直接获取到array的元素,并不是索引。 直接打印数组变量,得到的是数组在JVM中的地址; 打印数组时用Arrays.toString() 练习:请按倒叙遍历数组,并打印 java内置了数组的排序功能,Arrays.sort() 常用的算法排序有:冒泡排序、插入排序、快速排序等 冒泡排序使用两层for循环实现排序; 交换两个变量的值需要借助一个临时变量; 对数组排序会直接修改数组本身; 可以直接使用java标准库提供的Arrays.aort()对数组进行排序; 二维数组就是数组的数组 定义一个二维数组:int[][] ns = { {1,2,3,4}; {5,6,7,8,9}; {10,11,12,13,14,15} }; 访问二维数组中的某个元素:ns[row][col]; 要打印一个二维数组,可以用for双层循环,也可以用Java标准库提供的Arrays.deepToString(); 三维数组就是二维数组的数组 eg: 访问三维数组中的某个元素:arr[0][1][1] 练习:使用二维数组可以表示一组学生的成绩,请计算所有学生的平均分 备注: 二维数组就是数组的数组,三维数组就是二维数组的数组; 多维数组的每个数组的数组元素长度都不相同; 打印多维数组可以使用Arrays.deepTotring(); 最常见的多维数组是二维数组,访问二维数组的一个元素用array[row][col]。 命令行参数类型是String[] 数组; 命令行参数,由jvm接收用户输入,并传给main方法; 如何解析命令行参数,由程序自己实现。public class Test {
public static void main(String[] args){
int[] array = {1,3,45,22,89};
System.out.println(Arrays.toString(array));
}
}
public class Test {
public static void main(String[] args){
int[] arr = {1,3,45,22,89};
for (int i = arr.length-1; i>=0; i--){
System.out.println(arr[i]);
}
}
}
数组排序
public class Test {
public static void main(String[] args){
int[] arr = {1,3,45,22,89,0,77,90};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}
}
//对数组进行降序排序
public class Test {
public static void main(String[] args){
int[] arr = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 };
//排序前:
// System.out.println(Arrays.toString(arr));
//排序后
for (int i = 0; i < arr.length - 1; i ++){
for (int j = 0; j < arr.length-i-1; j ++){
if (arr[j] < arr[j+1]){
int tmp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = tmp;
}
}
}
System.out.println(Arrays.toString(arr));
if (Arrays.toString(arr).equals("[96, 89, 73, 65, 50, 36, 28, 18, 12, 8]")){
System.out.println("测试成功");
}else {
System.out.println("测试失败");
}
}
}多维数组
二维数组
public class Test {
public static void main(String[] args){
int[][] arr = {
{1,2,3},
{4,5,6,7},
{8,9,10,11,12}
};
System.out.println(arr.length);//输出二维数组的长度
//for 循环打印二维数组
for (int[] n : arr
) {
for (int nn : n
) {
System.out.println(nn);
}
}
//Arrays.deepToDtring()输出二维数组
System.out.println(Arrays.deepToString(arr));
}
}
三维数组
int[][][] arr = {
{
{1,2,3},
{4,5,6,7},
{8,9,10,11,12}
},
{
{13,14},
{15,16}
},
{
{17,18},
{19,20}
}
};
public class Test {
public static void main(String[] args){
// 用二维数组表示的学生成绩:
int[][] scores = {
{ 82, 90, 91 },
{ 68, 72, 64 },
{ 95, 91, 89 },
{ 67, 52, 60 },
{ 79, 81, 85 },
};
double sum = 0;
int num = 0;
for (int[] arr : scores
) {
for (int a : arr
) {
sum = sum + a;
num ++;
}
}
double average = sum/num;
System.out.printf("average:%.3f",average);
if (Math.abs(average - 77.733333) < 0.000001){
System.out.println("测试成功");
}else{
System.out.println("测试失败");
}
}
}
命令行参数