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

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

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

输出结果:

在这里插入图片描述

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

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值