c++ 数组最大值索引_04IDEA和数组

数组基本使用

数组是用来存储多个元素的容器,要求元素的类型要一致。

  • 复习数据类型

基本数据类型:byte short int long float double char boolean引用数据类型:【数组】、类、接口

定义数组的格式

使用以下的格式,可以用来定义数组类型的变量。

//数据类型[] 数组名;int[] arr1;//数据类型 数组名[];int arr2[];

动态初始化

动态初始化指的是:创建数组时,指定数组的长度,有系统分配默认值。

//数据类型[] 数组名=new 数据类型[长度];int[] arr1 = new int[3]; //定义一个int类型的数组,元素个数为3个double[] arr2 = new double[5]; //定义一个double类型的数组,元素个数为5个String[] arr3 = new String[3]; //定义一个String类型的数组,元素个数为3个

静态初始化指的是:创建数组时,不指定长度,直接写上数组的元素。

//静态初始化int[] array = new int[]{11, 22, 33, 45, 6, 6, 7, 7};//静态初始化简化写法int[] array = {1,3,4,4,5,6,11, 22, 33, 45, 6, 6, 7, 7};

数组元素访问

数组中每一个元素都有一个从0开始的编号,我们把这个编号叫做索引。通过以下格式可以访问数组的元素。

数组名[索引]
public class Demo1{    public static void main(String[] args){        //定义一个int类型的数组,元素个数为3个        int[] arr = new int[3];         System.out.println(arr); //[I@2d98a335  地址值        //给数组的元素赋值        arr[0]=8;        arr[1]=9;        arr[2]=10;        //获取元素的值,并打印        System.out.pritnln(arr[0]);        System.out.pritnln(arr[1]);        System.out.pritnln(arr[2]);                char[] arrayC = new char[3];        arrayC[0]='a';        arrayC[1]='b';        arrayC[2]='c';        //打印char类型数组,会把数组中的元素拼接成一个字符串,再打印。        System.out.println(arrayC);    }}

Java的内存分配

Java虚拟机把内存分为主要的三个区域:栈、堆、方法区

栈:存储局部变量堆:存储new出来的数据方法区:存储字节码相关信息

97064c05a8ed03a104f402f72ff2cf00.png

  • 两个引用指向同一片内存空间

int[] arrA=new int[3]; //arrA记录的是数组的地址 0x111int[] arrB=arrA; //arrB记录的是arrA的值0x111注意:arrA和arrB记录的是同一个数组的地址,当arrA对数组的元素进行了操作,对arrB有直接影响。

数组的常见问题

1.java.lang.ArrayIndexOutOfBoundsException
数组索引越界异常。
【注意:数组的最小索引是0,最大索引是长度-1】
2.java.lang.NullPointerException
空指针异常。当使用null值去访问数组的元素是就会出现该异常。

数组的常见操作

数组遍历

int[] array = new int[5];
array[0] = 11;
array[1] = 22;
array[2] = 33;
//遍历数组的代码
//数组名.length: 获取数组的长度
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}

数组元素求和

//静态初始化
int[] array = {1,2,3,4,5};
//遍历数组的代码
int sum=0;
for (int i = 0; i < array.length; i++) {
sum+=array[i];
}
System.out.println("数组的元素和为:"+sum);
System.out.println("数组的元素品均值为:"+(sum/array.length));

数组元素求最值

求最值的思路:
1.获取数组的0索引元素,假设为最大值max
2.遍历其他的元素和max比较,把较大的值重新赋值给max
3.循环结束之后,max记录的就是所有元素的最大值
//静态初始化
int[] array = {8, 2, 7, 10, 6};
//1.获取数组的0索引元素,假设为最大值max
int max = array[0];
//2. 遍历其他的元素和max比较,把较大的值重新赋值给max
for (int i = 1; i < array.length; i++) {
if(array[i]> max){
max = array[i];
}
}
//3. 循环结束之后,max记录的就是所有元素的最大值
System.out.println(max);

数组元素查找

查找数组中指定元素的第一次出现的索引。

int[] array = {10,3,4,5,8,7,6,2,9};
//键盘录入一个整数,查找这个整数在数组中的索引
Scanner sc=new Scanenr(System.in);
System.out.println("请输入你要找的元素:");
int key=sc.nextInt();
//遍历数组中的元素和key比较
int index=-1; //-1表示默认没有找到
for(int i=0;i if(array[i]==key){
//把索引记录下来
index=i;
break;
}
}
//如果循环结束之后,index的值还是-1,就说明没有这个元素。
if(index==-1){
System.out.println("你要找的元素不存在");
}else{
System.out.println("你要找的元素索引是:"+index);
}

评委打分

键盘录入6个评委的分数,去掉最高分,去掉最低分,求平均分。

分析思路:
1.键盘录入6个评委的分数,保持到一个数组中
2.求数组的最大值
3.求数组的最小值
4.求数组元素的和
5.求平均分
//1.键盘录入6个评委的分数,保存到一个数组中
int[] array = new int[6];
Scanner sc = new Scanner(System.in);
//方法一:键盘录入6个评委分数,要求在[0,10]范围内
/*for (int i = 0; i < array.length; i++) {
System.out.println("请输入评委的打分:");
int score = sc.nextInt();
//对分数进行判断,要求分数的范围是[0,10]
if (score >= 0 && score <= 10) {
//如果满足要求,就把元素存储到数组中
array[i] = score;
}else {
System.out.println("你输入的分数不合法!!!");
i--;
}
}*/
//方法二:键盘录入6个评委分数,要求在[0,10]范围内
int index = 0;
while (true) {
System.out.println("请输入评委的打分:");
int score = sc.nextInt();
if (score >= 0 && score <= 10) {
//如果满足要求,就把元素存储到数组中
array[index] = score;
index++;
} else {
System.out.println("你录入的数据不合法");
}
if (index == 6) {
break;
}
}
//求最大值
int max = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
}
}
//求最小值
int min = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] < min) {
min = array[i];
}
}
//求和
int sum = 0;
for (int i = 1; i < array.length; i++) {
sum += array[i];
}
//求平均值
int avg = (sum - max - min) / (array.length - 2);
System.out.println("最高分:" + max);
System.out.println("最低分:" + min);
System.out.println("去掉最高分和最低分平均分:" + avg);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值