数组基本知识点
- 数组是一个变量,存储相同数据类型的一组数据,数组中的所有元素必须属于相同的数据类型
- 声明数组就是在内存空间画出一串连续的空间
- 数组基本要素
--1.标示符:数组的名称,用来区分不同的数组
--2.数组元素:向数组中存放的数据
--3.元素下标:对数组元素进行编号,从0开始
--4.元素类型:数组元素的数据类型 - 数组的长度固定不变,避免数组越界
- 声明数组并且分配空间
--数据类型[ ] 数组名 = new 数据类型[大小]
int[] array = new int[];
- 赋值
--1.边声明边赋值
int[] score = {77,88,99};
int[] score = new int[] {77,88,99};
--2.从键盘录入信息并赋值
Scanner input = new Scanner(System.in);
for (inti= 0;i < 10 ;1++)
{
score[i] = input.nextInt();
}
练习题
对数组进行声明和赋值
- 计算5个学员的平均分
public class linshi {
public static void main(String[] args) {
int[] array = new int[5];
int total=0;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入5人成绩");
for (int i = 0;i < array.length;i++)
{
array[i] = scanner.nextInt();
total = total + array[i];
}
System.out.println("平均成绩是:" + (double)total/array.length);
}
}
含有判断的数组
- 有一个数列:8,4,2,1,23,344,12;循环输出数列的值;求数列中所有数值的和;猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
public class linshi {
public static void main(String[] args) {
int[] array = {8,4,2,1,23,344,12};
int total = 0;
for (int i = 0;i < array.length;i++)
{
System.out.println(array[i]);
total = total + array[i];
}
System.out.println("数列中所有数值的和" + total);
Scanner scanner = new Scanner(System.in);
System.out.println("请从键盘中任意输入一个数据");
int number = scanner.nextInt();
int i = 0;
for ( i = 0;i < array.length;i++)
{
if (number == array[i])
{
System.out.println("包含此数");
break;
}
}
//说明循环了一圈都没有发现与用户输入的值相等
if (i==array.length)
{
System.out.println("不包含此数");
}
}
}
数组排序
- 循环录入5位学员成绩,进行升序排列后输出结果
--Arrays.sort(数组名);是岁数组进行升序排列
public class linshi {
public static void main(String[] args) {
int[] grade = new int[5];
Scanner scanner = new Scanner(System.in);
System.out.println("请输入五位学员成绩");
for (int i = 0; i < grade.length; i++)
{
grade[i] = scanner.nextInt();
}
Arrays.sort(grade);
System.out.println("按升序排列");
for (int i = 0; i < grade.length; i++)
{
System.out.println(grade[i] + " ");
}
}
}
查找数组中的最大值
- 从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分
public class linshi {
public static void main(String[] args) {
int[] grade = new int[5];
int max = 0;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入java考试五位学生的成绩");
for (int i = 0; i < grade.length; i++)
{
grade[i] = scanner.nextInt();
if (max < grade[i])
{
max = grade[i];
}
}
System.out.println("考试成绩最高分是" + max);
}
}
数组插入算法
-
有一组学员的成绩{99,85,82,63, 60},将它们按升序排列。要增加一个学员的成绩,将它插入成绩序列,并保持升序。
--分析:
1.将成绩序列保存在长度为6的数组中
2.通过比较找到插入位置
3.将该位置后的元素后移一个位置
4.将增加的学员成绩插入到该位置
public class linshi {
public static void main(String[] args) {
int[] grade ={99,85,82,63,60};
Arrays.sort(grade);
for (int i = 0;i < grade.length;i++)
{
System.out.println(grade[i]);
}
Scanner scanner = new Scanner(System.in);
System.out.println("请输入新增成绩:");
int input = scanner.nextInt();
int pos = 0;//用户新输入的数在新数组中的位置
//遍历原数组,找到要插入的位置
for (int i = 0;i < grade.length;i++)
{
if (input <= grade[i])
{
pos = i;
System.out.println("插入的下标是" + pos);
break;
}
}
int[] grade1 = new int[6];
//拷贝旧数组从0开始,到pos位置的数到对应新数组同样下标中
for (int i = 0;i < pos;i++)
{
grade1[i] = grade[i];
}
grade1[pos] = input;
//拷贝旧数组从pos+1开始, 到旧数组长度位置的数到对应新数组同样下标中
for (int i = pos + 1;i < grade1.length ;i++)
{
grade1[i] = grade[i - 1];
}
System.out.println("插入后的成绩序列是:" );
for (int i = 0;i < grade1.length;i++)
{
System.out.println(grade1[i] + " ");
}
}
}
字符逆序输出
-
将 一组乱序的字符进行排序,进行升序和逆序输出
--分析:
1.创建数组存储原字符序列
2.利用Array类的sort( )方法对数组进行排序,并循环输出
3.从最后一个元素开始,将数组中的元素逆序输出
public class linshi {
public static void main(String[] args) {
char[] charArray = {'a','c','u','b','e','p','f','z'};
System.out.print("原字符序列:");
System.out.println(charArray );//字符类型的数组没循环操作进行输出时不能加其他修饰,例如:System.out.print( charArray[i] + "\t");
Arrays.sort(charArray);
System.out.print("升序排列后:");
System.out.println(charArray);
System.out.print("逆序输出为:");
for (int i =charArray.length-1;i>=0;i--)
{
System.out.print( charArray[i] + "\t");
}
}
}
-
向上一个练习中得到的升序字符序列中插入一个新的字符,要求插入之后字符序列仍保持有序
字符串数组
- 定义一个字符串数组,查找某个字符串在数组中出现的次数
public class linshi {
public static void main(String[] args) {
String[] array = {"大乔","貂蝉","昭君","小乔"};
String meinv ="小乔";
int count = 0;
//count计数,meibv在数组中出现的次数
for (int i = 0;i < array.length;i++)
{
if (array[i].equals(meinv)) {
count++;
}
System.out.println(count);
}
}
}