日期:2014-05-20  浏览次数:20887 次

求解答数组 不是很明白 高手的讲下谢谢
依次输入10个数,求最大值,然后反序输出这10个数。

定义一个员工类,该类具有姓名(随机产生一个五个字符组成的字符串)、编号(要求不重复)、和工资三个属性。要求随意创建该类的10个对象,并求出其中工资最高和最低人的姓名和编号。

今天将将数组 讲了二分查找和 冒泡 查找 冒泡还简单 就是二分查找 感觉有点吃力 
就这两个 麻烦写代码的时候写下注释 我好理解 小弟在此谢谢了

------解决方案--------------------
Java code

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;
    }
}