[数组、排序、查找、多维数组]
它们的体重分别是 3kg,5kg,1kg,3.4kg,2kg,50kg 。 请问这六只鸡的总体重是多少?平均体重是多少?
public class Test {
public static void main(String[] args) {
/*
它们的体重分别是 3kg,5kg,1kg,3.4kg,2kg,50kg 。
请问这六只鸡的总体重是多少?平均体重是多少?
定义一个数组
1. double[]表示一个double类型的数组。
2. hens表示数组名。
3. {3, 5, 1, 3.4, 2, 50} 表示数组的值/元素,依次表示数组第几个元素。
遍历数组,得到所有元素的和,用for
1. 通过hens[下标]来访问数组的元素,下标从0开始。
2. 【第一个元素 = hens[0]】
3. 通过for循环就可以循环访问数组的元素。
4. 使用一个变量 totalWeight把所有元素累加起来。
5.可以用数组名.length 得到数组的长度
*/
double[] hens = {3, 5, 1, 3.4, 2, 50};
double totalWeight = 0;
//可以用数组名.length 得到数组的长度
for(int i = 0; i < hens.length; i++){
totalWeight += hens[i];
}
System.out.println("总体重 = " + totalWeight + "平均体重 = " + totalWeight / hens.length);
}
}
比如: int a[] = new int[5]; //创建了一个数组,名字a,存放5个int。
数组内存图:
数组名[index]
比如:你要使用a数组的第3个数 a[2]。
public class Test {
public static void main(String[] args) {
//步骤:
//1. 创建一个double数组,大小为5
double[] scores = new double[5];
//2. 循环输入
import java.util.Scanner;
Scanner myScanner = new Scanner(System.in);
for(int i = 0; i < scores.length; i++){
System.out.println("请输入第" + (i + 1) + "个元素的值");
scores[i] = myScanner.nextDouble();
}
//3. 输出,遍历上面的数组
for(int i = 0 ;i < scores.length; i++){
System.out.println("第" + (i + 1) + "个元素的值 = " + scores[i]);
}
}
}
比如: a=new int[10];
public class Test {
public static void main(String[] args) {
//先声明一个叫scores的数组。
double[] scores
//再new分配内存空间来存放数据。
scores = new double[5];
}
}
int a[]={2,5,6.7,8,89,90,34,56},如果知道数组有多少元素,具体值
相当于:int a[] = new int[9] :
a[0]=2:a[1]=5:a[2]=6; a[3]=7:a[4]=8;
a[5]=89;a[6]=90;a[7]=34;a[8]= 56;
double hens[] = {3, 5, 1, 3.4, 2, 50};
等价于
double hens[] = new double[6];
hens[0] = 3; hens[1] = 5; hens[2] = 1; hens[3] = 3.4; hens[4] =2; hens[5] = 50;
public class Test {
public static void main(String[] args) {
//定义一个数组
char chars[] = new char[26];
//因为‘A’ + 1 = 'B'
for(int i = 0; i < chars.length; i++){
//chars是char[]类型。
//chars[i]是char类型。
//这里的‘A’ + i是int类型,需要强制转换。
chars[i] = (char)('A' + i);
}
for(int i = 0; i < chars.length; i++){
System.out.print(chars[i] + ' ');
}
}
}
public class Test {
public static void main(String[] args) {
//1.定义一个数组
int[] arr = {4,-1,9,10,23};
//2.假设arr[0]是max。如果max < 当前值,max = 当前值。
int max = arr[0];
int maxIndex = 0;
for(int i = 1; i < arr.length; i++){
//条件筛选
if(max < arr[i]){
max = arr[i];
maxIndex = i;
}
}
System.out.println("max = " + max + "maxIndex = " + maxIndex);
}
}
public class Test {
public static void main(String[] args) {
//double[] hens = {3, 5, 1, 3.4, 2, 50};
double[] hens = {3, 5, 1, 3.4, 2, 50};
doubel totalWeight = 0;
for(int i = 0; i < hens.length; i++){
totalWeight += hens[i];
}
System.out.println("数组和 = " + totalWeight + "数组平均值 = " + totalWeight / hens.length)
}
}
public class Test {
public static void main(String[] args) {
//什么是引用传递(地址拷贝)
int[] arr1 = {1,2,3};
int[] arr2 = arr1; //把arr1的地址赋给arr2.
//arr2的变化会影响arr1。
arr2[0] = 10;
//看一下arr1的值。
for(int i = ; i < arr1.length; i++){
System.out.print(arr1[i]);//输出{10,2,3}
System.out.print(arr2[i]);//输出{10,2,3}
}
}
}
public class Test {
public static void main(String[] args) {
//将 int[] arr1 = {10,20,30}; 拷贝到 arr2 数组
//要求数据空间是独立的。
int[] arr1 = {10,20,30};
//先创建一个arr2,开辟新的数据空间,保证大小和arr1一样。
int[] arr2 = new int[arr1.length];
//for循环拷贝arr1的每个元素拷贝给arr2
//这样arr2的变化,就不会影响arr1。
for(int i = 0; i < arr1.length; i++){
arr2[i] = arr1[i];
}
}
}
要求:把数组的元素内容反转。
arr {11,22,33,44,55,66} {66, 55,44,33,22,11}
public class Test {
public static void main(String[] args) {
//定义数组
int[] arr = {11,22,33,44,55,66};
//1. 把arr[0]和arr[5]交换{66,22,33,44,55,11}
//2. 把arr[1]和arr[4]交换{66,55,33,44,22,11}
//3. 把arr[2]和arr[3]交换{66,55,44,33,22,11}
//4. 一共交换arr.length/2。
//5. 每次交换对应的index是arr[i]和arr[arr.length - 1 - i]
for(int i = 0; i < arr.length / 2; i++){
int temp = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = arr[i];
arr[i] = temp;
}
}
}
public class Test {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55,66};
//1. 创建一个新的数组arr2,大小和arr1一样。
int[] arr2 = new int[arr.length];
//2. 逆序遍历arr1,将每个元素拷贝到arr2当中(顺序拷贝)。
//建议增加一个循环变量,更简单。
for(int i = arr.length - 1, j = 0; i >= 0; i--, j++){
arr2[j] = arr[i];
}
//3. for循环结束后, arr2就是arr的逆序数组。
//arr指向arr2的数据空间。
//arr原来的数据空间没有变量应用,会被当作垃圾销毁。
arr = arr2;
}
}