java输入10个身高,输出最高,要求用对象数组类,求教我写的这个错在哪里。

package scheight;
public class Student { int height;
}

package scheight;
import java.util.*;
public class Height {

public Student getHigher(Student[] stu){
Arrays.sort(stu);
return stu[stu.length-1];
}
public static void main(String[] args){
Height h=new Height();
Student[] stu=new Student[10];
Scanner input=new Scanner(System.in);
for(int i=0;i<stu.length;i++){
System.out.print("请输入第"+(i+1)+"个学生的身高:");
stu[i]=new Student();
stu[i].height=input.nextInt();

}
Student s=h.getHigher(stu);
System.out.print(s);
}
}

public Student getHigher(Student[] stu){
Arrays.sort(stu);
return stu[stu.length-1];
}
LZ
Arrays.sort()的确可以用来给数组排序 但是你查了API会发现有多种参数 因为每种参数比较的东西不一样 在比较时代码实现也不一样 你传入的Student对象是自定义的对象 对于在容器中给自定义的对象做比较 你想你如果做为java虚拟机 你本身不认识Studnet是个什么东西 别人让你排序 你知道按什么条件排嘛
需要实现Comparator接口的compare()方法 在compare方法中来具体实现自己需要的特定比较方式追问

compare方法还没学,想问下如果不比较数组,通过sort方法进行排序每个对象的身高数值,可以实现吗?

追答

貌似不行的 你要用容器的排序方法 而且传的是自定义的对象是不能直接比较的
而且LZ你要知道 System.out.print(s);这句话就算打印出来了 你也得不到你想要的结果 这个将会打印s这个Studnet对象在内存中的地址

追问

谢谢,已经通过循环比较的方法实现!

追答

其实LZ你不就是为实现得到最高身高的同学吗 比较的实际上是身高 其实应该把这个比较封装在Studnet中 不过你是这样写的 我就随便改了下 这样功能是能实现了 但是并不是规范的
class Student {
int height;

}

public class Height {

public static void main(String[] args){

int temp = 0;//用于记录身高
int id=0;//用于记录姓名
Student[] stu=new Student[5];
Scanner input=new Scanner(System.in);
for(int i=0;itemp){
temp = stu[i].height;
id = i+1;
}
}
System.out.print("第"+id+"个同学身高最高"+"---------->"+temp);
}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-22
楼主你好!
我发现楼主在对自己的对象进行排序时调用了
Arrays.sort();
但是不知道楼主有没有了解过该方法是需要对你的对象实现Comparable接口的
如果没有实现该接口 ,是无法完成排序的。
楼主要做的是在你的Student类继承该接口并实现该接口中对Height属性值的比较即可,
至于是递增排序还是递减排序就得看楼主是如何实现Comparable接口的方法了。
第2个回答  2012-09-22
错在这里
public Student getHigher(Student[] stu){
Arrays.sort(stu);
return stu[stu.length-1];
}追问

请问应该怎么修改。如果必须用sort方法做的话,我是初学者,很多不懂,谢谢了!

第3个回答  2012-09-22
Arrays.sort(stu);stu的对象必须实现Comparator接口

java程序编写:键盘输入十个数,输出最大数。麻烦把每一步都是什么意思...
public class Test { public static void main(String[] arg0){ Scanner scanner = new Scanner(System.in);\/\/\/创建Scanner对象 接受从控制台输入 System.out.println("请输入所需整数的个数!");int a = scanner.nextInt();\/\/接受int型的一个数字,这里是你要输入几个数字如果是10个就输入10...

java 连续输入10个整数并输出最大最小值
public static void main(String args[]){ int i,min,max;int A[] = new int[10];Scanner input=new Scanner(System.in);for(int j=0,j<10;j++){\/\/输入10个数 System.out.println("请输入一个数字:");int length=input.nextInt();\/\/输入一个数字 A[i] =length;} min=max=A[0...

如何用java编写一个,手动输入10个分数,去掉一个最高分,去掉一个最低...
输出结果图:参考代码如下:import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Scanner;public class xxx {public static void main(String[] args) {System.out.println("请输入10个数字,以逗号隔开:");Scanner scanner=new Scanner(System.in);String...

JAVA程序 利用数组 定义10个整数,输出其中的最大值,最小值 求代码!急...
public static void main(String args[] ){ int arr[]={1,9,7,8,6,4,5,3,2,0}, min=Integer.MAX_VALUE, max=Integer.MIN_VALUE;for(int i=0; i<arr.length; i++){ if(arr[i]>max){ max=arr[i];} if(arr[i]<min){ min=arr[i];} } System.out.println("MAX="+max...

java从键盘输入10个数的程序。假设定义了一个数组a[],键盘输入函数scanne...
int和double指的是把控制台输入的内容转化成相应的类型,如果输入的不是数字,就会出错。next表示等待控制台输入下一个内容,按下回车表示输入完成

java 这样在一个类中定义一个对象数组为什么会出错
首先纠正你一个错误,第二句(第二张图第六行)应该是 a[0] = new Student();而不是 Student[0] = new Student();因为你定义的数组名字叫 a 而不是 Student。但是,你的主要错误并不只在这里。而是因为在 Java 中,在一个类的方法外只能定义这个类的成员及其他方法,而不能进行任何对这个...

Java ,从scanner接收十个数字的数组,然后输出数组中最大的数和这个数...
你这里涉及到两个问题,一是如何把输入的数字接收进来放到数组里面,二是找到这个数组的最大值;第一个问题,循环输入,定义一个索引,输入一个数字,所以加加 for(int index;index<10;index++){ arr[index]=scanner.nextInt();} 第二个问题,定义一个临时变量存贮最大的数的索引,循环从前往后...

java,用while循环语句,循环输入10个人的成绩,成绩存入数组,输出这10...
int i = 0;float sum[]=new float[10];while(i<10){ float j =bc.nextFloat();sum[i]=j;i++;} float s = sum[0];for(int c=0;c<sum.length;c++){ if(sum[c]>s){s=sum[c];} } System.out.println("最大"+s);for(int c=0;c<sum.length;c++){ if(sum[c]...

java编程(从键盘输入10个数,存入数组,然后把他们显示出来,(从中找出最...
首先定义一个长度为10的数组,然后用for循环来接收用户输入的数 在定义一个int类型的变量用来判断最大值 int min=arr[0];int[] arr=new int[10];for(int i=0;i<arr.length;i++){ arr[i]=input.nextInt();if(arr[i]<min){ min=arr[i];} } System.out.println("最大值是:"+min...

java编写应用程序,输入 10个整数,然后按从小到大的顺序输出大神们帮帮...
public static void main(String[] args) { Scanner input = new Scanner(System.in);\/\/创建Scanner对象 int[] arrayInt = new int[10];\/\/声明一个数组 长度为10 for (int i = 0; i < arrayInt.length; i++) { \/\/循环输入数字,放入arrayInt数组 System.out.print("请输入数字:"); ...

相似回答