依次输入10个数,求最大值,然后反序输出这10个数。定义一个员工类,该类具有姓名(随机产生一个五个字符组成的字符串)、编号(要求不重复)、和工资三个属性。要求随意创建该类的10个对象,并求出其中工资最高和最低人的姓名和编号。今天将将数组  讲了二分查找和 冒泡 查找   冒泡还简单  就是二分查找  感觉有点吃力 
就这两个 麻烦写代码的时候写下注释   我好理解   小弟在此谢谢了

解决方案 »

  1.   


    import java.util.Arrays;
    import java.util.Random;public class TestSync { public static void main(String args[]) {
    Emp[] emps = { new Emp(1000), new Emp(2000),
    new Emp(5000), new Emp(3000), new Emp(4000)};
    Arrays.sort(emps);
    System.out.println(emps);
    for (Emp e : emps) {
    System.out.println(e);
    }
    }
    }class Emp implements Comparable {
    String name;
    int no = 0;
    double salary;
    static int count = 0; Emp(double salary) {
    this.no = ++count;
    this.name = makeRandomName();
    this.salary = salary;
    } private String makeRandomName(){//五个随即字符??有的坑爹啊。
    int count = 0;
    StringBuffer sb = new StringBuffer();
    while(count++ < 5){
    int random = new Random().nextInt();
    sb.append((char)(Math.abs(random)%25 + 65));
    }
    return sb.toString();
    } @Override
    public String toString() {
    return "no = " + no + ",name = " + name + ",salary = " + salary;
    }

    public int compareTo(Object o) {
    if (o instanceof Emp) {
    Emp e = (Emp) o;
    if (e.salary > this.salary) {
    return -1;
    }
    if (e.salary < this.salary) {
    return 1;
    }
    }
    return 0;
    }
    }
      

  2.   

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Scanner;public class ArraySort { /**
     * 依次输入10个数,求最大值,然后反序输出这10个数。
     */
    public static void main(String[] args) {
    List<Integer>list = new ArrayList<Integer>();//定义一个list集合
    Integer [] array = new Integer[10];  //定义一个数组
    int max = 0;
    System.out.println("请输入10个整数,以空格隔开:");
    Scanner scanner = new Scanner(System.in);  //循环输入十个数
    for (int i = 0; i < 10; i++) {
     Integer num = (Integer)scanner.nextInt();//并把这些数添加到数组中
     array[i] = num; 
    }
    Arrays.sort(array);//升序排列数组
    Collections.reverse(list);//反序排列list结合中的元素
    max = array[array.length-1];//角标最大的即为最大值
    for (int i = 0; i < array.length; i++) {
    list.add(array[i]);//把数组添加到list集合中(这时的数组已是按升序排列的)
    }
    Collections.reverse(list);//反序排列集合
    for (Iterator iterator = list.iterator(); iterator.hasNext();) {//用迭代器遍历集合
    Integer integer = (Integer) iterator.next();
    }
    System.out.println("最大值是:"+max);
    System.out.println(list);
    }
    }
    ====================================结果==============================================
    请输入10个整数,以空格隔开:
    2 3 4 5 1 9 8 7 6 0
    最大值是:9
    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
      

  3.   

    第一个你好好做吧,就是那样,第二题最大最小都出来了。可能你要的写法是for循环比较薪水,如果你能啃懂这个,对你以后也有帮助。。