プロが教えるわが家の防犯対策術!

 C言語の構造体みたいなのはないんですか?

野球のデータを扱っているのですが、構造体がないのでできません。

打率の順位をソートしたいのですが、Cでは構造体でソートすれば選手名まで全部ソートできたのですが。。。

Javaでは、いちいち選手名、打率などの配列を作っているのですが、打率をソートしてから選手名と一緒に表示しようとしても打率の配列だけ、ソートしてあり選手名の配列と打率の配列があいません。

要するに、打率の配列はソートし、選手の配列はデータを入力したときのままなので、順番が違っているのです。

うまい方法を教えてください。初歩的な質問でごめんなさい。

A 回答 (2件)

メンバーが public なクラスが構造体と(ほぼ)同じです。



大体こんな感じ。

// sort Object using Arrays.sort()

import java.util.Arrays;

class Batter implements Comparable {
 public double rate;
 public String name;
 Batter(double r, String n) {
  rate = r;
  name = n;
 }
 public int compareTo(Object o) {
  return (int)((rate - ((Batter)o).rate)*1000.);
 }
}

class w03 {
 public static void main(String[] args) {
  Object[] batter = {
   new Batter(0.3, "ichiro"),
   new Batter(0.1, "shinjo"),
   new Batter(0.0, "irabu")
  };

  // sort
  Arrays.sort(batter);

  // print-out to console
  for (int i=0; i < batter.length; i++) {
   Batter b = (Batter)batter[i];
   System.out.println(b.name + " " + Double.toString(b.rate));
  }
 }
}

このように java.util.Arrays の sort() メソッドを使うと、C でやってた
イメージに近くなります。

C の qsort() と違って、どんなデータでもソートできるわけではなく、対象と
なるクラスは Comparable インターフェースを実装しなくてはいけません。
    • good
    • 2
この回答へのお礼

ご丁寧の回答ありがとうございました。
すごくわかりやすくて、とても助かりました。必要なことは全部書いていただけたんですね。

とてもハッキリとわかりました。私初心者なものですから、ComparableをimplementsするとかArrayクラスの存在とか知らなくて、自分でメソッドを作らなければいけないのかな?と思っていました。1通りの順序を書いてもらったので、大助かりです。

ありがとうございます。

お礼日時:2002/05/28 19:01

構造体の変わりにクラスを作ればいいと思います。


たとえば、

struct Data {
char name[20];
double daritsu;
};

の代わりに

class Data {
public String name;
public double daritsu;
}

で、
data = new Data[10];//10人分のデータ

とか。
    • good
    • 0
この回答へのお礼

自分で作ったクラスの配列なんてできるんですね~。
知りませんでした。ありがとうございます。

これで、なんとなくできるような・・・がんばってみます。

お礼日時:2002/05/28 18:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!