package com.homework;
import java.util.Scanner;
public class experiment13_1{
public static void main(String[] args) {
Scanner scan= new Scanner(System.in);
System.out.println("请分别输入x、y:");
int x=scan.nextInt();
int y=scan.nextInt();
System.out.println("最大值为:"+max(x,y));
int[] a={3,2,4,8,9,10,7}; int[] arr=sort(a); }
public static <T extends Comparable> T max(T x,T y){//最大值
if(x.compareTo(y)>0)
return x;
else
return y;
}
public static <T extends Comparable> T[] sort(T[] x){//排序
int k=x.length;
for(int i=0;i<k;i++){
for(int j=0;j<i-2;j++){
if(x[j].compareTo(x[j+1])>0){
T temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
}
}
}
return x;
}}
为什么MAX(x, y)不报错,而sort(a)报错
泛型使用不当:
前面泛型声明中, ,表明 T 的类型是 Comparable 的子类,
实际使用的时候,传递的参数类型是 int[] a ,这个 int 类型,是原始类型。
原始类型 不具备对象属性,不继承和实现任何类和接口。
楼主可以换成 原始类型 的封装类型 试一试。
比如: Integer[] a;
那你的报错是什么?
第一层循环开始时,i=0,第二层循环的条件是 j<i-2 ,也就是 j<0-2, j初始化为0,0<0-2 的值是 false,第二层循环没进入。
感觉像是冒泡排序吧?算法实现没写对。
数组用Integer[]
感觉像是基本类型的数组不会自动装包