数组经典例题与Arrays演示方法。
例如1:
计算5位学生平均分:
分别为 60 90 90 70 85分
分析:
定义总分变量
定义平均分变量
然后累加求和
循环数组
public class java1 {
public static void main(String[] args) {
int[]score={60,80,70,90,85};
double avg;
int sum=0;
for (int i=0;i<5;i++){
sum=sum+score[i];
}
avg=sum/score.length;
System.out.println(avg);
}
}
执行结果:算出平均分位77.0
例如2:
控制台输出五位同学分数然后算出平局分
分析
定义总分变量
定义平均分变量
控制台循环输入
循环录入数组
累加求和
求平均`
import java.util.Scanner;
public class java2 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int[]score=new int [5];
System.out.println("请输入五位学生成绩");
int sum=0;
double avg;
for (int i=0;i<5;i++){
int scores=input.nextInt();
score[i]=scores;
sum=sum+score[i];
}
avg=sum/score.length;
System.out.println("平均分"+avg);
}
}
结果为
例如3:
例如 一个数列 8,4,2,1,23,344,12
要求循环输出数列值
求数列所有和
猜数游戏,如果输入一个数有数列的中的数,显示猜对了,否则猜错了。
分析;
定义变=总和变量
循环输出
累加求和
控制台输入
定义boolean值为false
如果输入的数等于数组中的数
boolean为true
并且跳出循环
如果为true猜对了
否则猜错了
代码:
import java.util.Scanner;
public class java3 {
public static void main(String[] args) {
int sum=0;
int[]num={8,4,2,1,23,344,12};
System.out.println("数列");
for (int i=0;i<num.length;i++){
sum=sum+num[i];
System.out.println(num[i]);
}
System.out.println("所有数值和"+sum);
System.out.println();
System.out.println();
System.out.println("请输入一个数");
boolean is=false;
Scanner input=new Scanner(System.in);
int nums=input.nextInt();
for (int i=0;i<num.length;i++){
int numss=num[i];
if (nums==numss){
is=true;
break;
}
}
if (is==true){
System.out.println("猜对了");
}else{
System.out.println("猜错了");
}
}
}
结果:
例如3:一组成绩90 85 82 63 60
现在要在其中输入一个成绩并让他按降序排列
例如输入88
显示
90 88 85 82 63 60
分析
定义一个长度为6的数组
int []score={90,85,82,63,60,0}:
定义一个输入数字的数组下标的变量index。
等于数组长度-1,因为数组是从下标[0]开始
。
index=score.lengeth-1 //index=5
循环输入
如果输入的数大于数组中的数
则index=数组中那个数的下标
例如
addnum>int[i]
index=i
88>85
而85的下标为[1]
所以
index=1.
//定义下标
第二步:数字移位
因为你要把88移入到85前面。
使用逆序操作
定义一个新变量j
j=数组长度-1// j=5
j>index
当j>index时
j逐渐递减。
因为是往后移
所以
score[j]=score[j-1]
60=63
63=82
82=85
85=88
88=90
然后让下标等于addnum
score[index]=addnum
循环打印输出数组
代码如下
import java.util.Scanner;
public class java9 {
public static void main(String[] args) {
int[] nums = {99, 85, 82, 63, 60, 0};
System.out.println("请输入插入的数字");
Scanner input = new Scanner(System.in);
int add = input.nextInt();
int index = nums.length - 1;
for (int i = 0; i < nums.length; i++) {
if (add > nums[i]) {
index = i;
break;
}
}
for (int j = nums.length - 1; j > index; j--) {
nums[j] = nums[j - 1];
}
nums[index]=add;
for (int i=0;i<nums.length;i++){
System.out.println(nums[i]);
}
}
}
结果:
n逆序操作
例如:输入五个数字
然后让他们逆序显示输出
例如
你欢喜不我
输出
我不喜欢你
首先
定义长度为5的数组
循环录入
然后因为是逆序
定义一个新变量j
j=数组长度-1,j>=0,j–
然后输出
代码:
import java.util.Scanner;
public class homework5 {
public static void main(String[] args) {
System.out.println("请输入五句话");
Scanner input=new Scanner(System.in);
String[]juzi=new String[5];
for (int i=0;i<5;i++){
System.out.print("请输入"+(i+1)+"句话");
String shuru=input.next();
juzi[i]=shuru;
}
System.out.println("逆序后的话");//倒序
for (int j=juzi.length-1;j>=0;j--){
System.out.println(juzi[j]);
}
}
}
结果为
Arrays的方法
sort方法:把数组中的元素按升序排列
方式
Arrays.sort(数组名)
代码:
int[] arrs1 = {20, 62, 58, 94, 51};
Arrays.sort(arrs1);
for (int i=0;i<5;i++){
System.out.print("\t\t"+arrs1[i]);
}
输出结果为
equals方法:判断两个数组中的元素是否相等。
Arrays.equals(数组1,数组2)
代码:
int[] arrs1 = {20, 62, 58, 94, 51};
int[] arrs2 = {20, 62, 58, 94, 51, 60};
for (int i = 0; i < 5; i++) {
System.out.print("\t\t" + arrs1[i]);
}
boolean val = Arrays.equals(arrs1, arrs2);
结果为false
toString方法
把数组转换成字符串格式
String 名称=Arrays.toString(数组名)
代码:
String str1 = Arrays.toString(arrs1); //String str = "[20, 62, 58, 94, 51]";
System.out.println(str1);
结果为:
fill方法:
把数组中的元素都设置为val
Arrays.fill(数组名, 值);
代码
Arrays.fill(arrs1, 100);
String str2 = Arrays.toString(arrs1); //String str = "[20, 62, 58, 94, 51]";
System.out.println(str2);
结果为
copyOf方法:
把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致
Arrays.copyOf(数组名, 数组长度)
int[] newArr = Arrays.copyOf(arrs2, 10);
for (int i = 0; i < newArr.length; i++) {
System.out.print("\t"+newArr[i]);
}
结果
binarySearch方法
查询元素值在数组中的下标(要求数组中元素已经按升序排列)
Arrays.binarySearch(数组名, 元素)
int index = Arrays.binarySearch(arrs2, 58);
System.out.println("58的下标是:" + index);
结果: