解決済みの質問
コマンドプロンプト上の標準入力で文字列と数値を複数組入力していき、
その入力された文字列とそれに対する数値をその数値で比較し最後に大きい順で順に表示するようなプログラムを作りたいのですが、よく構造がわからないので教えて下さい。(ちなみに入力された文字列と数値は、それらを1つのクラスのフィールドとして定義するとして)
たとえば人の名前と年齢を入力し大きい順に並べるとか
NAME :Bob
age :12
NAME :Tom
age :25
NAME :Ken
age :3
NAME :
NAME:Tom,age:25
NAME:Bob,age:12
NAME:Ken,age:3
このように出力したいのですが
もしこのようなプログラムを作成することのできる方いましたら、
教えてやってください。
投稿日時 - 2002-06-30 04:01:28
長いですけど、作ってみました。
コメントも何もつけてないですが、わからないところがあったら質問してください。
// Personクラス
public class Person implements Comparable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int compareTo(Object obj) {
Person other = (Person)obj;
return other.age - this.age;
}
public String toString() {
return "NAME : " + name + "\t\tAGE : " + age;
}
}
// ここからメインのクラス
import java.io.*;
import java.util.*;
public class InputPerson {
public static void main(String[] args) throws Exception {
BufferedReader reader =
new BufferedReader(new InputStreamReader(System.in));
List people = new ArrayList();
while (true) {
System.out.print("NAME : ");
String name = reader.readLine();
if (name.equals("")) {
break;
}
int age = 0;
do {
System.out.print("AGE : ");
} while ((age = toDigit(reader.readLine())) < 0);
people.add(new Person(name, age));
}
System.out.println("");
show(people);
}
private static void show(List people) {
Collections.sort(people);
for (Iterator itr = people.iterator(); itr.hasNext(); ) {
System.out.println(itr.next());
}
}
private static int toDigit(String str) {
int result = 0;
try {
result = Integer.parseInt(str);
}
catch (Exception ex) {
result = -1;
}
return result;
}
}
投稿日時 - 2002-07-01 00:31:47
0人が「このQ&Aが役に立った」と投票しています
OKWaveのオススメ
おすすめリンク