java知识三(数组)
第一章 一维数组
数组是一个数据容器,可用来存储一批同类型的数据。
1.1 数组的初始化格式
静态初始化(定义时确定数据):
简化格式:数据类型[] 数组名 = {元素1, 元素2, 元素3...};
示例:int[] arr = {12, 24, 36};
完整格式:数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, 元素3...};
示例:int[] arr = new int[]{12, 24, 36};
注意:“数据类型[] 数组名” 也可写成 “数据类型 数组名[]”。
1.2 数组的访问
通过 数组名[索引] 访问元素(索引从0开始计数)。
System.out.println(arr); // 输出 [I@4eec7777 内存地址
System.out.println(arr[0]); // 输出 12
System.out.println(arr[1]); // 输出 24
arr[1] = 100; // 修改索引为1的元素为100
1.3 获取数组的长度(元素个数)
通过 数组名.length 获取长度。
// 获取数组的长度(即元素个数)
System.out.println(arr.length); // 输出 3
1.4 动态初始化数组
定义规则:定义数组时先不存入具体的元素值,只确定数组存储的数据类型和数组的长度。
语法格式:
数据类型[] 数组名 = new 数据类型[长度];
示例:int[] arr = new int[3];
1.5 动态初始化数组元素默认值规则
|数据类型|明细 | 默认值|
|基本类型|byte、short、char、int、long | 0 |
|基本类型|float、double | 0.0 |
|基本类型|boolean | false|
|引用类型|类、接口、数组、String | null |
1.6 设计输入成绩,得到和均极大极小
注意执行时,方式1或者方式2不能同时注释或者放开,只能选其一
package com.kgl;
import java.util.Arrays;
import java.util.Scanner;
public class score {
public static void main(String[] args) {
double[] myScores = inscore(4); // 方式1
computer(myScores); // 方式1
// inscore(4); // 方式2
}
public static double[] inscore(int renshu){ // 方式1
// public static void inscore(int renshu){ // 方式2
double scores[] = new double[renshu];
Scanner sc= new Scanner(System.in);
for(int i =0;i<renshu;i++){
System.out.println("请输入分数:");
double score=sc.nextDouble();
scores[i]=score;
}
System.out.println("所有分数为:" + Arrays.toString(scores));
sc.close();
// computer( scores); // 方式2
return scores; // 方式1
}
public static void computer(double[] scores){
double sum = 0;
double max = scores[0];
double min = scores[0];
for (int i=0;i<scores.length;i++){
sum += scores[i];
max = max > scores[i] ? max : scores[i] ;
min = min < scores[i] ? min : scores[i] ;
}
double avg = sum / scores.length;
System.out.println("总分:" + sum);
System.out.println("平均分:" + avg);
System.out.println("最高分:" + max);
System.out.println("最低分:" + min);
}
}
第二章 二维数组
数组中的每个元素都是一个一维数组,这个数组就是二维数组。
2.1 静态初始化
格式:数据类型[][] 数组名 = new 数据类型[][]{元素1, 元素2, 元素3, ...};
示例:int[][] arr = new int[][]{ {12, 24, 36} , {666, 888} , {10, 20, 30} , {999} };
2.2 动态初始化
格式:数据类型[][] 数组名 = new 数据类型[长度1][长度2];
示例:int[][] arr = new int[3][5];
(对应结构为:int[][] arr = new int[][]{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} };)
2.3 二维数组的访问
数组定义:int[][] arr = new int[][]{ {12, 24, 36} , {666, 888} , {10, 20, 30} , {999} };
访问规则:
获取行数组:数组名称[行索引] → 示例1:arr[2]
获取具体元素:数组名称[行索引][列索引] → 示例2:arr[2][1];
修改元素:数组名称[行索引][列索引]=? → 示例3:arr[3][0] = 111
2.4 二维数组的遍历
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
int data = arr[i][j];
System.out.print(data + "\t");
}
System.out.println();
}
2.5 记录武林人士姓名和座位,点到的时候输出座位
import java.util.Scanner;
public class Arraydemo2 {
public static void main(String[] args) {
test2();
}
public static void test2() {
String [][] set1 = new String[][]{{"张无忌","赵敏","周芷若"}
,{"张三丰","宋远桥","殷梨亭"}
,{"灭绝","成昆","玄冥二老","金毛狮王"}
,{"杨逍","纪晓芙"}};
System.out.println(set1.length);
System.out.println(set1[2].length);
for(int i=0;i<set1.length;i++){
for(int j=0;j<set1[i].length;j++){
System.out.print(set1[i][j]+" ");
}
System.out.println();
}
System.out.println("------------------");
Scanner sc = new Scanner(System.in);
System.out.println("请输入名称:");
String name = sc.next();
for (int i = 0; i < set1.length; i++) {
for (int j = 0; j < set1[i].length; j++) {
if(name.equals(set1[i][j])){
System.out.println("找到了,在"+(i+1)+"行"+(j+1)+"列");
return;
}
}
}
System.out.println("没有找到");
sc.close();
}
}
2.6 石头迷阵游戏初始化
package com.kgl;
public class Arraydemo3 {
public static void main(String[] args) {
test();
}
public static void test() {
String[][] arr = new String[4][4];
String num = "1";
int count = 1;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
arr[i][j] = num;
count++;
num = count+"";
if (count>15){
num="";
}
}
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
int index1 = (int)(Math.random()*arr.length);
int index2 = (int)(Math.random()*arr[i].length);
String temp = arr[0][0];
arr[0][0] = arr[index1][index2];
arr[index1][index2] = temp;
}
System.out.println();
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
更多推荐


所有评论(0)