数组

2018-10-29  本文已影响0人  陈皮丨阿四

数组定义方式:

public class ArrayDemo1 {

public static void main(String[] args) {

// 数组:一个容器,能够放一组数据

// 特点(缺点):1.必须是同类型;2.固定长度

// 声明方法1:数组类型 数组名[] = new 数组类型[长度];数组类型[] 数组名 = new 数组类型[长度];

int arr1[] = new int[5];// 默认保存了5个0

// String str[] = new String[5];// 默认保存了5个null

// boolean b[] = new boolean[5];// 默认保存了5个false

// 通过下标值去访问数组元素:长度为n的数组,下标值范围0-->n-1

arr1[0] = 120;

arr1[1] = 121;

arr1[2] = 122;

arr1[3] = 123;

arr1[4] = 124;

// arr1[5] = 125;// 数组越界

// System.out.println(arr1[0]);

// 声明方法2:数组类型 数组名[] = new 数组类型[]{元素1,元素2,....};

int arr2[] = new int[] {120,121,122,123,124};

System.out.println(arr2[3]);

// 声明方法3:数组类型 数组名[] = {元素1,元素2,....};

int arr3[] = {120,121,122,123,124,125};

// 数组的length属性

System.out.println(arr3.length);

// 字符串的length()方法

System.out.println("hello".length());

}

}

数组常见操作--遍历

public class ArrayDemo2 {

public static void main(String[] args) {

// 数组的遍历(取到数组中每一个元素)

// length遍历次数-->数组名[下标]

int arr[] = {5,7,23,98,111,13,77};

// 遍历方法1:

// for(int i = 0;i < arr.length;i++) {

// int num = arr[i];

// System.out.println(num);

// }

// 遍历方法2:增强for循环

for(int num:arr) {

System.out.println(num);

}

String str[] = {"ab","cd","ef","g"};

for(String s:str) {

System.out.println(s);

}

}

}

一维数组内存模型

二维数组内存模型

二维数组的定义及遍历

public class ManyArrayDemo1 {

public static void main(String[] args) {

// 二维数组

// int arr1[][] = {{1,2,3},{4},{5,6,7,8}};

// System.out.println(arr1.length);// 5

// 第二种声明方式

// int[][] arr2 = new int[3][];

// arr2[0] = new int[]{1,2,3};

// arr2[1] = new int[]{4,5,6};

// arr2[2] = new int[]{7,8,9,10,11,12};

// 二维数组的访问

// System.out.println(arr2[2][2]);

// 二维数组遍历

// for(int i = 0;i < arr1.length;i++) {

// for(int j = 0;j < arr1[i].length;j++) {

// System.out.print(arr1[i][j]+" ");

// }

// System.out.println();

// }

}

}

排序(冒泡,选择)

public class ArrayDemo4 {

public static void main(String[] args) {

// 1.冒泡排序

// int[] arr={6,3,8,2,9,1};

// 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 temp;

// temp = arr[j];

// arr[j] = arr[j+1];

// arr[j+1] = temp;

// }

// }

// }

// for(int num:arr) {

// System.out.println(num);

// }

// 2.选择排序

int[] arr={6,3,8,2,9,1};

// 1-1 3,6,8,2,9,1  1-2 3,6,8,2,9,1 1-3 2,6,8,3,9,1 1-4 2,6,8,3,9,1 1-5 1,6,8,3,9,2

// 2-1 1,6,8,3,9,2  2-2 1,3,8,6,9,2 2-3 1,3,8,6,9,2 2-4 1,2,8,6,9,3

for(int i = 0;i < arr.length - 1;i++) {

for(int j = i + 1;j < arr.length;j++) {

if(arr[i] > arr[j]) {

int temp;

temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

}

}

for (int num : arr) {

System.out.println(num);

}

}

}

快速排序及数组拷贝

public class ArrayDemo5 {

public static void main(String[] args) {

int arr[] = {7,5,3,2,1,9,10};

Arrays.sort(arr);// 快速排序--升序

for(int num:arr) {

System.out.println(num);

}

}

}

public class ArrayCopyDemo1 {

public static void main(String[] args) {

// 数组的复制

int source[] = {1,2,3,4,5,6};

int dest[] = {7,8,9,10,11,12,13,14,15};

/*

* source:源数组

* srcPos:源数组中的起始位置

* dest:目标数组

* destPos:目标数组中的起始位置

* length:要复制的数组元素的个数

*/

System.arraycopy(source, 1, dest, 3, 3);

for(int num:dest) {

System.out.print(num+" ");

}

}

}

课外习题

1.模拟35选7

public class Practice5 {

public static void main(String[] args) {

// 模拟35选7(没有循环嵌套)

boolean bool[] = new boolean[35];// 35个false

for(int i = 0;i < 7;i++) {

// 生成一个随机数

int random = (int)(Math.random()*35+1);// 5

if(bool[random-1]) {

i--;

continue;

}

bool[random-1] = true;

}

// for(boolean b:bool) {

// System.out.print(b+" ");

// }

for(int i = 0;i < bool.length;i++) {

if(bool[i]) {

System.out.println(i+1);

}

}

}

}

2.编写一个简单程序,要求数组长度为5,分别 赋值10,20,30,40,50,在控制台输出该数组的值。

public class HomeWork1 {

public static void main(String[] args) {

// 1、编写一个简单程序,要求数组长度为5,分别赋值10,20,30,40,50,在控制台输出该数组的值。

int arr[] = {10,20,30,40,50};

for(int num:arr) {

System.out.println(num);

}

}

}

3.给定一个有9个整数(1,6,2,3,9,4,5,7,8)的数组 ,先排序,然后输出排序后的数组的值。

public class HomeWork3 {

public static void main(String[] args) {

// 3、给定一个有9个整数(1,6,2,3,9,4,5,7,8)的数组,先排序,然后输出排序后的数组的值。

int arr[] = {1,6,2,3,9,4,5,7,8};

for(int i = 0;i < arr.length - 1;i++) {

for(int j = i + 1;j < arr.length;j++) {

if(arr[i] < arr[j]) {

int temp;

temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

}

}

for(int num:arr) {

System.out.println(num);

}

}

}

4.在控制台上输入一个正整数,代表数组长度,然后向数组中输入每一个元素,然后在控制台上遍历出来。

public class Practice8 {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

System.out.println("请输入要输入几个数字:");

int num = scan.nextInt();

int arr[] = new int[num];

int index = 0;

for(int i = 0;i < num;i++) {

System.out.println("请输入第"+(i+1)+"个数字");

arr[index] = scan.nextInt();

index++;

}

for(int n:arr) {

System.out.print(n+" ");

}

}

}

5.利用数组完成此题:控制台输入一年当中的第几月多少号,输出这天是这一年的多少天。

public class Practice9 {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

System.out.println("year:");

int year = scan.nextInt();

System.out.println("month:");

int month = scan.nextInt();

System.out.println("date:");

int date = scan.nextInt();

int feb = 28;

// 闰年29天

if(year%4==0 && year%100!=0 || year%400==0) {

feb = 29;

}

int days[] = {31,feb,31,30,31,30,31,31,30,31,30,31};

int sum = 0;

for(int i = 0;i < month - 1;i++) {

sum = sum + days[i];

}

System.out.println("第"+(sum+date)+"天");

}

}

6.随机生成100个1到10的随机数,计算这些数字出现的概率。

public class Test {

public static void main(String[] args) {

int arr[] = new int[10];

for(int i = 0;i < 100;i++){

int random = (int)(Math.random()*6)+1;

arr[random-1]++;

}

for(int i = 0;i < arr.length;i++){

System.out.println(i+1+"出现的概率是"+arr[i]+"%");

}

}

}

上一篇下一篇

猜你喜欢

热点阅读