问题描述:定义一个类,该类中包含以下几个方法(静态):
(1)实现两个字符串数组的逆序排序,输出结果为字符串数组;
(2)求两个整形数组的交集;
(3)求两个浮点型数组的并集。
解决思路:
(1)实现两个字符串数组的逆序:定义一个新的字符串数组Str,长度为需要逆序的两个字符串数组Str1和Str2之和。将Str1和Str2先后逆序存入输出结果中,最后将输出结果作为返回值即可。
(2)求两个整形数组的交集:定义一个新的整型数组numbers,长度定义为两个整型数组numbers1和numbers2长度之和(考虑两个集合相等的最差情情况),数组中数据值初始化为整型最大值。设置双重for循环逐个比较numbers1和numbers2中数值,若果两者相等,则将其存入numbers,最后将numbers作为返回结果。
(3)求两个浮点型数组的并集:定义一个新的浮点型数组numbers,长度定义为两个浮点型数组numbers1和numbers2长度之和(考虑两个集合交集为空的最差情情况),数组中数据值初始化为浮点型最大值。先通过for循环将其中一个数组的值存入numbers,再设置双重for循环将另一数组中的各值与numbers中已存在的值逐个比较,如果两者不相等,则将其存入numbers,最后将numbers作为返回结果。
代码实现:
Example 类:
package experiment2;
public class Example {
public static String[] reverse(String[] str1, String[] str2) {
String[] result = new String[str1.length+str1.length];
int j=0;
for(int i=str1.length-1;i>=0;i--) {
result[j] = str1[i];
j++;
}
for(int i=str2.length-1;i>=0;i--) {
result[j]= str2[i];
j++;
}
return result;
}
public static int[] interInt(int[] numsN1,int[] numsN2) {
int[] result = new int[numsN1.length+numsN2.length];
for(int i=0;i<result.length;i++) {
result[i]=Integer.MAX_VALUE;
}
int count=0;
for(int i=0;i<numsN1.length;i++) {
for(int j=0;j<numsN2.length;j++) {
if(numsN1[i]==numsN2[j]) {
result[count++]=numsN1[i];
}
continue;
}
}
return result;
}
public static float[] unionFloat(float[] numsF1,float[] numsF2) {
float[] result = new float[numsF1.length+numsF2.length];
for(int i=0;i<result.length;i++) {
result[i]=Float.MAX_VALUE;
}
int count=0;
for(int i=0;i<numsF1.length;i++) {
result[count++]=numsF1[i];
}
for(int i=0;i<numsF2.length;i++) {
boolean flag =true;
for(int j=0;j<numsF1.length;j++) {
if(numsF2[i]==result[j]) {
flag =false;
}
continue;
}
if(flag) {
result[count++]=numsF2[i];
}
}
return result;
}
}
Test类:
package experiment2;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] str1 = {"10","20","30"};
String[] str2 = {"abc","fgh","mpq"};
String[] str = Example.reverse(str1,str2);
System.out.println("逆序输出结果如下: ");
for(int i=0;i<str.length;i++) {
System.out.print(str[i]+" ");
if(i==str1.length-1) {
System.out.println();
}
}
System.out.println();
int[] numsN1 = {-3,6,9,8,0,19,-17};
int[] numsN2 = {1,2,5,7,9,15,3,-1};
int[] numsN = Example.interInt(numsN1, numsN2);
System.out.println("两个整形数组交集结果如下: ");
for(int i=0;i<numsN.length;i++) {
if(numsN[i]!=Integer.MAX_VALUE) {
System.out.print(numsN[i]+" ");
}
}
System.out.println();
float[] numsF1 = {-3,6,9,8,0,19,-17};
float[] numsF2 = {1,2,5,7,9,-3,6,-17,8};
float[] numsF = Example.unionFloat(numsF1, numsF2);
System.out.println("两个浮点型数组并集结果如下: ");
for(int i=0;i<numsF.length;i++) {
if(numsF[i]!=Float.MAX_VALUE) {
System.out.print(numsF[i]+" ");
}
}
}
}
输出结果:
到此,符合题目条件的一个简单的 类就写好了。