荐 大数据——一维数组
理解数组
在Java中,数组是用来存储一组相同类型数据的数据类型。当数组初始化完毕后,java为数组在内存中分配一段连续的空间,其在内存中开辟的空间也将之固定,此时数组的长度就不能再发生改变。即使数组中没有保存任何数据,数组所占据的空间依然存在。(现在所说的数组暂时都是一维数组)
定义数组
在Java中,定义数组的语法有如下两种。
数据类型[] 数组名=new 数据类型[数组长度];
或者:
数据类型 数组名[]=new 数据类型[数组长度]
定义数组时一定要指定数组名和数组类型。
必须书写“[]”,表示定义了一个数组,而不是一个普通的变量。
“[数组长度]”决定连续分配的空间的个数,通过数组的length属性可获取此长度。
数组的类型数据用于确定分配的每个空间的大小。
//声明
int[] a;
String b[];
double []c;
//分配空间,使用new关键字来分配空间,
//new关键字是java中优先级最高的。
a=new int[5];
b=new String[6];
c=new double[4];
数组元素分配的初始值
1.数组元素的类型是基本类型中的整数类型(byte、short、int和long),则数组元素的值是0。
2.数组元素的类型是基本类型中的浮点类型(float、double),则数组元素的值是0.0。
3.数组元素的类型是基本类型中的字符类型(char),则数组元素的值是’\u0000’。
4.数组元素的类型是基本类型中的布尔类型(boolean),则数组元素的值是false。
5.数组元素的类型是引用类型(类、接口和数组),则数组元素的值是null。
数组元素的表示和赋值
由于定义数组时内存分配的是连续的空间,所以数组元素在数组里顺序排列编号,该编号即元素下标,它标明了元素在数组中的位置。首元素的编号规定为0,因此,数组的下标依次为0、1、2、3、4······依次递增,每次增长数是1。数组中的每个元素都可以通过下标来访问。
获得数组元素的语法格式如下。
数组名[下标值]
//赋值
a[0]=10;
a[1]=14;
a[2]=18;
a[3]=24;
a[4]=33;
a[5]=45;
数组的初始化
所谓的数组的初始化,就是在定义数组的同时一并完成赋值的操作。
数组初始化的语法格式如下、
数据类型[]数组名={值1,值2,值3,······,值n};
或者:
数据类型[]数组名=new 数据类型[]{值1,值2,值3,······,值n};
//声明的同时分配空间
char[] ch=new char[10];
float f[]={11.1f,22.2f};//声明、分配空间并赋值
int []d=new int[]{1,2,3};
遍历数组
在编写程序时,数组和循环往往结合在一起使用,可以大大的简化代码,提高程序编写效率。通常使用for循环遍历数组。
示例一
Text1:计算30位同学的平均分,同时打印每一个分数。
public class Text1 {
public static void main(String[] args) {
int[] scores=new int[30];
//使用随机数对数组赋值
for (int i = 0; i <30 ; i++) {
scores[i] = (int) (Math.random() * 80 + 20);
}
//遍历查看数组中每一个元素
System.out.print("[");
for (int i = 0; i <scores.length ; i++) {
if (i == scores.length - 1) {
System.out.println(scores[i]);
break;
}
System.out.print(scores[i]+", ");
}
System.out.print("]");
//计算平均分
double sum=0;
for (int i = 0; i <scores.length ; i++) {
sum+=scores[i];
}
System.out.println("总分为:" + sum);
System.out.println("平均分为:"+sum/scores.length);
//增强for的用法
/* System.out.print("[");
for (int a:scores) {
System.out.println(a+",");
}
System.out.println("]");*/
}
}
输出结果:
示例二
Text2:有一个数列:8,4,2,1,23,344,12
(1)循环输出数列的值。
(2)求数列中所有数值的和。
(3)猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数 。
import java.util.Scanner;
public class Text2 {
public static void main(String[] args) {
int[] a={8,4,2,1,23,344,12};
int sum=0;
for (int i = 0; i <a.length ; i++) {
System.out.print(a[i]+"\t");
sum+=a[i];
}
System.out.println();
System.out.println("所有数值和是:"+sum);
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个数:");
int num=sc.nextInt();
int i = 0
for (; i <a.length ; i++) {
if(num==a[i]){
System.out.println("包含这个数:"+num);
break;
}
}if(i==a.length){
System.out.println("不包含这个数");
}
}
}
输出结果:
示例三
Text3:从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分。
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int[] scores=new int[5];
for (int i = 0; i <scores.length ; i++) {
System.out.println("请输入第" + (i + 1) + "个值");
scores[i]=sc.nextInt();
}
for (int i = 0; i <scores.length ; i++) {
System.out.print(scores[i]+",");
}
System.out.println();
//求最大值
int max=scores[0];
for (int i = 0; i <scores.length ; i++) {
if(scores[i]>max){
max=scores[i];
}
}
System.out.println("最大值为:"+max);
}
}
输出结果:
示例四
Text4:求出4家店的最低手机价格。
步骤:
1.定义数组存储价格,并利用循环输入
2.定义变量min保存当前的最低价
3. 将min和数组中的其余元素依次比较
public class Text3 {
public static void main(String[] args) {
int[] a = {3000, 3150, 2900, 2950};
for (int i = 0; i < a.length; i++) {
System.out.println("第"+(i+1)+"店的价格:"+a[i]);
}
System.out.println();
int min = a[0];
for (int i = 0; i < a.length; i++) {
if (a[i] < min) {
min = a[i];
}
} System.out.println("最低的价格是"+min);
}
}
输出结果:
示例五
Text5:数组存储5笔购物金额,在控制台输出并计算总金额
import java.util.Scanner;
public class Text4 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入会员本月的消费记录");
double[] money=new double[5];
double sum=0;
for (int i = 0; i < money.length; i++) {
System.out.print("请输入第" + (i + 1) + "笔购物金额:");
money[i] = sc.nextDouble();
sum=sum+money[i];
}
System.out.println("序号"+"\t"+"\t"+"金额(元)");
for (int i = 0; i < money.length; i++) {
System.out.println((i+1)+"\t"+"\t"+money[i]);
}
System.out.println("总金额"+"\t"+"\t"+sum);
}
}
输出结果:
增删改查
数组范围内:
增:数组的定义、赋值
删:程序运行结束
改:数组元素的重新赋值,或者地址改变
查:查看数组的地址和元素的值
长度范围外的:长度要变化(新的数组)
增:元素个数的增加
删:元素个数的减少
改:修改其中的元素
数组增加元素
Text6:有一组学员的成绩{99,85,82,63, 60},将它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序。
程序分析:1、将成绩保存在数组中。2、通过比较找到插入位置。3、该位置元素往后移一位。4、插入新成绩。
import java.util.Arrays;
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
int[] a={99,85,82,63,60};
int[] b=new int[6];
for (int i = 0; i < a.length; i++) {
b[i]=a[i];
}
System.out.println(Arrays.toString(b));//把数组转成String字符串
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个数:");
int num=sc.nextInt();
boolean isInsert=false;
for (int i = b.length-2; i >=0 ; i--) {//从后向前遍历
if(num>b[i]){
b[i+1]=b[i];//下标后移
}else{
b[i+1]=num;
isInsert=true;
break;
}
}if(isInsert==false){//该数最大,放在首位
b[0]=num;
}
System.out.println(Arrays.toString(b));
}
}
输出结果:
数组删除元素
Text7:有一组学员的成绩{99,85,82,63, 60},输入一个下标,删除一个成绩。
import java.util.Arrays;
import java.util.Scanner;
public class Demo5 {
public static void main(String[] args) {
int[] a={99,85,82,63,60};
int[] b=new int[4];
Scanner sc=new Scanner(System.in);
System.out.println("请输入要删除的下标:");
int num=sc.nextInt();
int j=0;
for (int i = 0; i < a.length; i++) {
if(i==num)continue;;
b[j]=a[i];
j++;
}
System.out.println(Arrays.toString(b));
}
}
输出结果:
本文地址:https://blog.csdn.net/dsjia2970727/article/details/107346190