Java习题2:在一个类中实现中实现两个字符串数组的逆序排序、两个整形数组的交集、两个浮点型数组的并集等方法

it2023-08-17  65

问题描述:定义一个类,该类中包含以下几个方法(静态):

(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]+" "); } } } }

输出结果:

到此,符合题目条件的一个简单的 类就写好了。

最新回复(0)