0
点赞
收藏
分享

微信扫一扫

按照要求定义一个操作类:要求完成一个一维数组操作类,其中可以加入任意类型的数据,数组的具体操作类型由程序外部决定,并且可以实现查询功能。

桑二小姐 2022-03-13 阅读 45

操作类:

public class MainC10 <T>{
	public T T[];
	public T[] init(T...arg) {
		return arg;
	}
	public int search(T T[],T t) {
		int n=-1;
		for(int i = 0; i < T.length; i++) {
			if(T[i].equals(t)) {
				n = i;
			}
		}
		return n;
	}
	public void print(T T[]) {
		for(int i = 0; i < T.length; i++) {
			System.out.print(T[i]+" ");
		}
	}
}

主类:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		MainC10<Object> mc = new MainC10<Object>();
		mc.T = mc.init("my","age","is",20);
		mc.print(mc.T);		
		Scanner sc = new Scanner(System.in);
		int n;
		Object findelem;
		findelem = sc.next();
		n = mc.search(mc.T, findelem);
		if(n==-1) {
			System.out.println("未找到该元素");
		}else {
			System.out.println("该元素位于T["+n+"]");
		}
	}
}

存储各种类型的数据没有问题。
有一个问题是在输入元素查找元素那里。我设置输入的数组类型是Object(这样就能输入各种类型的数据了),但sc.next()会将所有元素变为String类型,因此找不到“20”这个Integer类型数据。

解决方案一:
在搜索时将所有数据类型转变为String类型进行比对。

public int search(T T[],T t) {
		int n=-1;
		for(int i = 0; i < T.length; i++) {
			String temp;
			temp = T[i].toString();
			if(temp.equals(t)) {
				n = i;
			}
		}
		return n;
	}

这道题一定还有很多种解决方法,我的方法算不上是最简便的,期待大家会有更好的方法一起讨论分享😊

举报

相关推荐

0 条评论