以下の条件を満たすプログラムが分かりませんので質問させてください。
exile.javaのプログラムを用いて、以下の設問に答えよ。
(A) メンバーの名前列(第0列)のアルファベット順に表を
並び替えるプログラム「Quiz10A.java」を作成せよ.
(B) メンバーの生年月日の若い順に(若いメンバーほど前に
なる順)に表を並び替えるプログラム「Quiz10B.java」を
作成せよ.
(C)メンバー表の中から、実行時に入力した日付の日で30歳以上の
メンバーだけを表示するプログラム「Otona.java」を作成せよ
exile.javaは以下のプログラムです。
class EXILE {
public static void main(String[] args){
String[][] member = {
{"名前","年","月","日","血液型", "出身"},
{"HIRO", "1969", "6", "1", "AB", "神奈川"},
{"MATSU", "1975", "5", "27", "O", "神奈川"},
{"MAKIDAI", "1975", "10", "27", "O", "神奈川"},
{"USA", "1977", "2", "2", "AB", "神奈川"},
{"AKIRA", "1981", "8", "23", "A", "静岡"},
{"KENCHI", "1979", "9", "28", "O", "神奈川"},
{"KENJI", "1980", "1", "21", "B", "宮崎"},
{"TETSUYA", "1981", "2", "18", "O", "神奈川"},
{"NAOTO", "1983", "8", "30", "B", "埼玉"},
{"NAOKI", "1984", "11", "10", "O", "千葉"},
{"ATSUSHI", "1980", "4", "30", "A", "埼玉"},
{"TAKAHIRO", "1984", "12", "8", "O", "長崎"},
{"NESMITH", "1983", "8", "1", "O", "熊本"},
{"SHOKICHI", "1985", "10", "3", "A", "北海道"}
};
int i,j;
for(i=0; i<member.length; i++){
System.out.print(member[i][0]);
for(j=1; j<member[i].length; j++){
System.out.print(", "+member[i][j]);
}
System.out.print("\n");
}
}
}
個人的なスケジュールの都合で緊急を要しています。どうか助けてください、お願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
Quiz10A.java
import java.util.*;
public class Quiz10A {
public static void main(String[] args)
{
String[][] member = {
{"名前","年","月","日","血液型", "出身"},
{"HIRO", "1969", "6", "1", "AB", "神奈川"},
{"MATSU", "1975", "5", "27", "O", "神奈川"},
{"MAKIDAI", "1975", "10", "27", "O", "神奈川"},
{"USA", "1977", "2", "2", "AB", "神奈川"},
{"AKIRA", "1981", "8", "23", "A", "静岡"},
{"KENCHI", "1979", "9", "28", "O", "神奈川"},
{"KENJI", "1980", "1", "21", "B", "宮崎"},
{"TETSUYA", "1981", "2", "18", "O", "神奈川"},
{"NAOTO", "1983", "8", "30", "B", "埼玉"},
{"NAOKI", "1984", "11", "10", "O", "千葉"},
{"ATSUSHI", "1980", "4", "30", "A", "埼玉"},
{"TAKAHIRO", "1984", "12", "8", "O", "長崎"},
{"NESMITH", "1983", "8", "1", "O", "熊本"},
{"SHOKICHI", "1985", "10", "3", "A", "北海道"}
};
Arrays.sort(member, new MemberNameComp());
int i,j;
for(i=0; i<member.length; i++){
System.out.print(member[i][0]);
for(j=1; j<member[i].length; j++){
System.out.print(", "+member[i][j]);
}
System.out.print("\n");
}
}
}
class MemberNameComp implements Comparator<String[]>
{
public int compare(String[] a, String[] b)
{
if (a[0].equals("名前"))
return -1;
else if (b[0].equals("名前"))
return 1;
else
return a[0].compareTo(b[0]);
}
}
Quiz10B.java
import java.util.*;
public class Quiz10B {
public static void main(String[] args)
{
String[][] member = {
{"名前","年","月","日","血液型", "出身"},
{"HIRO", "1969", "6", "1", "AB", "神奈川"},
{"MATSU", "1975", "5", "27", "O", "神奈川"},
{"MAKIDAI", "1975", "10", "27", "O", "神奈川"},
{"USA", "1977", "2", "2", "AB", "神奈川"},
{"AKIRA", "1981", "8", "23", "A", "静岡"},
{"KENCHI", "1979", "9", "28", "O", "神奈川"},
{"KENJI", "1980", "1", "21", "B", "宮崎"},
{"TETSUYA", "1981", "2", "18", "O", "神奈川"},
{"NAOTO", "1983", "8", "30", "B", "埼玉"},
{"NAOKI", "1984", "11", "10", "O", "千葉"},
{"ATSUSHI", "1980", "4", "30", "A", "埼玉"},
{"TAKAHIRO", "1984", "12", "8", "O", "長崎"},
{"NESMITH", "1983", "8", "1", "O", "熊本"},
{"SHOKICHI", "1985", "10", "3", "A", "北海道"}
};
Arrays.sort(member, new MemberBirthComp());
int i,j;
for(i=0; i<member.length; i++){
System.out.print(member[i][0]);
for(j=1; j<member[i].length; j++){
System.out.print(", "+member[i][j]);
}
System.out.print("\n");
}
}
}
class MemberBirthComp implements Comparator<String[]>
{
public int compare(String[] a, String[] b)
{
if (a[1].equals("年"))
return -1;
else if (b[1].equals("年"))
return 1;
else
return -String.format("%4s%2s%2s", a[1],a[2],a[3]).compareTo(String.format("%4s%2s%2s", b[1],b[2],b[3]));
}
}
Otona.java
import java.text.*;
import java.util.*;
public class Otona {
public static void main(String[] args)
{
String[][] member = {
{"名前","年","月","日","血液型", "出身"},
{"HIRO", "1969", "6", "1", "AB", "神奈川"},
{"MATSU", "1975", "5", "27", "O", "神奈川"},
{"MAKIDAI", "1975", "10", "27", "O", "神奈川"},
{"USA", "1977", "2", "2", "AB", "神奈川"},
{"AKIRA", "1981", "8", "23", "A", "静岡"},
{"KENCHI", "1979", "9", "28", "O", "神奈川"},
{"KENJI", "1980", "1", "21", "B", "宮崎"},
{"TETSUYA", "1981", "2", "18", "O", "神奈川"},
{"NAOTO", "1983", "8", "30", "B", "埼玉"},
{"NAOKI", "1984", "11", "10", "O", "千葉"},
{"ATSUSHI", "1980", "4", "30", "A", "埼玉"},
{"TAKAHIRO", "1984", "12", "8", "O", "長崎"},
{"NESMITH", "1983", "8", "1", "O", "熊本"},
{"SHOKICHI", "1985", "10", "3", "A", "北海道"}
};
//指定日の入力(西暦で"年/月/日"形式で入力させてください)
//仮指定日
String inputdt = "2010/2/7";
int i,j;
for(i=0; i<member.length; i++){
if (isShow(member[i], inputdt))
{
System.out.print(member[i][0]);
for(j=1; j<member[i].length; j++){
System.out.print(", "+member[i][j]);
}
System.out.print("\n");
}
}
}
static boolean isShow(String[] member, String inputdt)
{
//ヘッダーは無条件に出力
if (member[0].equals("名前"))
return true;
boolean ret = true;
try {
//年齢算出
Calendar input = Calendar.getInstance();
Calendar birth = Calendar.getInstance();
DateFormat df = DateFormat.getDateInstance();
input.setTime(df.parse(inputdt));
birth.setTime(df.parse(member[1] + "/" + member[2] + "/" + member[3]));
//指定日 < 生年月日は除外
if (input.compareTo(birth) < 0)
ret = false;
int y = input.get(Calendar.YEAR) - birth.get(Calendar.YEAR);
int m = input.get(Calendar.MONTH) - birth.get(Calendar.MONTH);
int d = input.get(Calendar.DATE) - birth.get(Calendar.DATE);
if (d < 0)
m--;
if (m < 0)
y--;
//30歳未満は除外
if (y < 30)
ret = false;
} catch (Exception e) {
System.out.println(e);
}
return ret;
}
}
No.2
- 回答日時:
回答とは関係のない話ですが・・・
Otona.javaのisShowメソッド内の年齢計算は冗長な書き方をしていますが、これは以下の様に簡単に実装をする事が可能です。
指定日時点の年齢=(指定日8桁整数-生年月日8桁整数)/10000
入力の形式や文字列の数値変換等の考慮をする必要がありますし、今のままでも動く事は動くのですが、
余裕があれば実行時入力の実装のついでに、ご自分の手で仕上げをする意味で挑戦されてみてはいかがでしょうか。
迅速な回答、ありがとうございました!本当に助かりました。
指定日時点での年齢の実装、そんな短くても構わないんですね。
時間を見つけて自身で実装してみます。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
3桁のカウンター表示
-
九九の表
-
LinkedHashMapについて
-
エラー(互換性の無い型)
-
論理演算子”||”またはの入力方法
-
countに実行した回数をいれたい...
-
数値⇒漢数字変換 java
-
java キーボード入力された値の...
-
7つ数字を表示したら改行すると...
-
javaプログラムについて
-
キーボードから10人分の点数を...
-
JSPやサーブレットでSystem.out...
-
変数を動的に利用するには?
-
System.err. printlnとSystem.o...
-
オブジェクトの中のプロパティ...
-
ダブルクォーテーションのrepla...
-
C言語のポインターに関する警告
-
ORA-01858: 数値を指定する箇所...
-
IF関数でEmpty値を設定する方法。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
論理演算子”||”またはの入力方法
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
java キーボード入力された値の...
-
総称型ArrayList<E>への参照...
-
JAVAのfor文で困っています。
-
テキストボックスに入力された...
-
Java、2の0乗~10乗の表示
-
コマンドライン引数の例外処理...
-
7つ数字を表示したら改行すると...
-
数値⇒漢数字変換 java
-
countに実行した回数をいれたい...
-
Ctrl+Zが入力されると終了する...
-
Java 入力した整数値の合計を、...
-
繰り返しによる星印の出力
-
配列から最大値・最小値
-
2つのスクロールバーを連動させ...
-
要素数が10の配列で、乱数0~9...
-
2次元配列の並び替え
-
javaです。1月1日から日数入れ...
おすすめ情報