プログラミング初心者です。
Carクラスを
●フィールドとして4桁のナンバーと倍精度のガソリン量を持つ
●Comparableインターフェースを実装する(compareTo()を必ずオーバーライドしなければいけないものと認識しています)
●Collections.sort()を使って定義したメソッドでList<Car>を代入した時にListの中身を4桁のナンバーの昇順で並べ替える
の三点を満たすように作りたいと考えています。以下のようにすると一応それっぽく動くのですがCarクラスだけ単独でコンパイルすると警告メッセージが出てきてしまいます。この警告は問題ないものなのかあるいは下記のコードが推奨されない(またはやってはいけない)書き方を含んでいるのか教えていただけるでしょうか。
import java.util.;
import java.lang.;
import java.io.*;
public class Car implements Comparable{
private int iNum;
private double dGas;
public Car(int iNum, double dGas){ this.iNum = iNum; //車のナンバー this.dGas = dGas; //車のガソリン残量 } public int getNum(){ return this.iNum; } public double getGas(){ return this.dGas; } @Override public int compareTo(Object obj){ if(obj instanceof Car){ Car car = (Car) obj; if(this.getNum() > car.getNum()){ return 1; }else if(this.getNum() < car.getNum()){ return -1; }else{ //等号成立の時 return 0; } }else{ ClassCastException e = new ClassCastException(); throw e; } } @Override public String toString(){ return "number:" + this.iNum + "\tgas:" + this.dGas; } public static void SortCar(List<Car> cars){ Collections.sort(cars); }
}
import java.io.;
import java.util.;
import java.lang.*;
class CarTest{
public static void main(String[] args){
Car car0 = new Car(1003, 10.0);
Car car1 = new Car(1002, 10.0);
Car car2 = new Car(1001, 10.0);
Car car3 = new Car(1000, 10.0);
List<Car> cars = new ArrayList<Car>(); cars.add(car0); cars.add(car1); cars.add(car2); cars.add(car3); System.out.println("*****並べ替え実行前*****"); System.out.println(cars.get(0)); System.out.println(cars.get(1)); System.out.println(cars.get(2)); System.out.println(cars.get(3)); Car.SortCar(cars); System.out.println("*****並べ替え実行後*****"); System.out.println(cars.get(0)); System.out.println(cars.get(1)); System.out.println(cars.get(2)); System.out.println(cars.get(3)); }
}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/20 19:38