Java之数组的学习
今天我·们·来看看Java数组的应用。
今日学习任务:记录复原
小明负责记录班上参加志愿活动的同学的学号,但某天中午小明睡梦之中胡乱操作电脑,不小心让一些同学的学号重复记录了,请你帮他复原。
以下是测试样例:
测试输入: 1 2 2 3 9 9 5 5 8 8 预期输出: 1 2 3 5 8 9
首先,我们来了解一下Java数组的基础知识。
Java对数组的一些操作方法
跟C/C++不同,Java对数组的操作提供了很多现成和实用的方法,常用的主要包括
Arrays
工具类和System.arraycopy
方法。Arrays工具类
Java中的
Arrays
类是一个实现对数组操作的工具类,包括了各种各样的静态方法,可以实现数组的排序和查找、数组的比较和对数组增加元素,数组的复制和将数组转换成字符串等功能。
初步尝试:
package step3;
import java.util.Arrays;
import java.util.Scanner;
public class RecordRecovery {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] record = new int[10];
int[] recordRecovery = new int[10];
/********** Begin *********/
int num=0;
int k=0;
for(int i=0;i<10;i++){
//有两种情况
//一种是数组中前后元素相同
if(record[i]==record[i+1]){
recordRecovery[k]=record[i];
k++;//记录recordRecovery数组的元素个数
i+=2;//让数组直接跳到重复数字之外的数字的位置
}
//一种是数组中前后元素不相同
else{
recordRecovery[k]=record[i];
k++;
}
}
num=k;//此处是为了定义num,让其符合题中原有代码要求
Arrays.sort(recordRecovery);//给recordRecovery数组排序
/********** End *********/
for (int i = 0; i < num; i++) {
System.out.print(recordRecovery[i]);
if (i != num - 1) {
System.out.print(' ');
}
}
}
}
发现问题:
思考问题来源: 数组索引输出在main函数中有问题
改进之后:
package step3;
import java.util.Arrays;
import java.util.Scanner;
public class RecordRecovery {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] record = new int[10];
int[] recordRecovery = new int[10];
/********** Begin *********/
for(int i=0;i<10;i++){
if(scanner.hasNextInt()){
record[i]=scanner.nextInt();
}
}
//先进行排序
Arrays.sort(record);
recordRecovery[0]=record[0];
//将不同的项放入新的数组
int j=0;
for(int i=1;i<record.length;i++){
if(record[i]!=recordRecovery[j]){
j++;
recordRecovery[j]=record[i];
}
}
int num=j+1;
/********** End *********/
for (int i = 0; i < num; i++) {
System.out.print(recordRecovery[i]);
if (i != num - 1) {
System.out.print(' ');
}
}
}
}
改进之后:运行正确!!!
今天的Java学习分享就到这里啦
谢谢大家喽