以下の条件を満たすプログラムが分かりませんので質問させてください。

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


個人的なスケジュールの都合で緊急を要しています。どうか助けてください、お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

回答とは関係のない話ですが・・・


Otona.javaのisShowメソッド内の年齢計算は冗長な書き方をしていますが、これは以下の様に簡単に実装をする事が可能です。
指定日時点の年齢=(指定日8桁整数-生年月日8桁整数)/10000
入力の形式や文字列の数値変換等の考慮をする必要がありますし、今のままでも動く事は動くのですが、
余裕があれば実行時入力の実装のついでに、ご自分の手で仕上げをする意味で挑戦されてみてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

迅速な回答、ありがとうございました!本当に助かりました。
指定日時点での年齢の実装、そんな短くても構わないんですね。
時間を見つけて自身で実装してみます。

本当にありがとうございました。

お礼日時:2010/02/08 14:14

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

}
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

Qjavascript:(function(q, a, z) { q[a]("f")[z] = Ma

javascript:(function(q, a, z) { q[a]("f")[z] = Math.floor(Math.random()*999999);document.forms[0].submit(); })(document, "getElementById" ,"value");

このブックマークレットをsetIntervalで動かしたいのですがどう書き換えればいいのかよくわかりません。

調べたらstartfncやsetInterval(ここに何かを指定?,ミリ秒);を付ければ可能なことがわかったのですがうまくいきません。
初心者です。何卒宜しくお願いします

Aベストアンサー

こんにちは

>setIntervalで動かしたいのですが~~
setIntervalは以下のような構文になります。
 intervalID = window.setInterval(func, delay);
https://developer.mozilla.org/ja/docs/Web/API/Window/setInterval

ご提示のスクリプトは即時関数の形式をとっていますので、さらに関数化(匿名関数でも可)して上記構文のfuncに当てはめれば良いことになります。
http://qiita.com/katsukii/items/cfe9fd968ba0db603b1e
スクリプトは概ね以下の2行と等価ですので、こちらを関数化しても同じですね。
(フォームに乱数を設定しサブミットする)
 document.getElementById("f")..value = Math.floor(Math.random()*999999);
 document.forms[0].submit();


ところで、ご提示のスクリプトではフォームをサブミットするようになっていますが、通常はサブミットするとページが遷移してしまうので、setIntervalで繰り返すことは難しいはずです。
まぁ、target属性が設定されていたりすれば別ですけれど・・・
使い方がいまいちよくわかりませんが、文法的には
 setInterval( function(){
  ~~~
}, dalay);
とするか、
 setInterval(hoge, dalay);
 function hoge(){
  ~~~
 }
のようにすることで、実行が可能なはずです。(繰り返しできる環境であれば・・・)

こんにちは

>setIntervalで動かしたいのですが~~
setIntervalは以下のような構文になります。
 intervalID = window.setInterval(func, delay);
https://developer.mozilla.org/ja/docs/Web/API/Window/setInterval

ご提示のスクリプトは即時関数の形式をとっていますので、さらに関数化(匿名関数でも可)して上記構文のfuncに当てはめれば良いことになります。
http://qiita.com/katsukii/items/cfe9fd968ba0db603b1e
スクリプトは概ね以下の2行と等価ですので、こちらを関数化しても同じですね。
(フォ...続きを読む

Qclass Test_A {  main(){}}の実行順序は?

public class Test_A {
public static void main(){

int a = 0;
int b = 1;

}
}
例えば上のようなサンプルで何故 main()がクラスTest_A の中に挟まっているのでしょうか?実行順序としては main()が終了したら、クラスTest_A の方はどうなるのでしょうか? main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。よろしくお願いします。 

Aベストアンサー

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時には、Test_Aクラスのインスタンスは生成されません。
質問のコードでは変数a,bに値が代入され、それで終わりです。

Javaでは、(正確にはJavaVMは)実行するclassファイルにある、
String[]引数を持ったvoid mainメソッドを実行する仕様になっています。
しかし、mainメソッドを実行するときには何のインスタンスも生成されていないので、
何かのインスタンスのメソッドを実行することはできません。
なので、staticなメソッドでないとJavaVMが実行できないのです。
さらに、JavaVMからアクセス可能なスコープを与える必要があるので、
publicである必要もあるのです。

あとは、そのmainメソッドに指定されたコードを実行し、mainメソッドの最後まで処理が進んだら
そこでJavaVMが終了し、プログラムも終了します。

※細かい話ですが、main()からプログラムは始まりません。
正確に言うと、引数なしのmain()メソッドは他のメソッドと何ら代わりがありません。
プログラムを始めるには、
アクセススコープがpublicで、staticな戻り値のなく、引数にString配列を取るmainメソッド
であることが必要です。つまり、
public static void main(String[] args)
とするのが通常です。
試しに質問のコードをjavaコマンドで実行すると、NoClassDefFoundErrorが出るはずです。

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時...続きを読む

Q"try{}catch(){}"文で"close()"はどのように書けばよいのでしょうか。

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プログラム1
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


●プログラム2
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


なお、私の環境は以下の通りです。
OS: Microsoft Windows XP Professional SP2
開発環境:Eclipse 3.2.2
java: java version "1.4.2_13"

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プロ...続きを読む

Aベストアンサー

>私のこの考え方は正しいのでしょうか。
正しいです。質問者さんが書かれているやり方が一般的です。
念のため書いておきますが、outをtryの外で宣言しないとコンパイルが通りません。

まぁ、あくまでデザインパターンを学ぶための本ですから、細かなコーディングについて気にする必要はないでしょう(疑問を持つことは良いことですが)。

Q[クラス名].[メソッド名].[メソッド名]という書き方。

javaを勉強している者です。

少しピンと来ない書き方があるのですがそれはタイトルの通りの書き方で、具体的には

Main.getMailStore().isNewMail()

という書き方です。MailというのがクラスでgetMailStore()というのがそのクラスで宣言されているメソッドで下記のように実装されています。(MailStoreというのはインターフェースとして別のファイルで宣言されています。)

private static MailStore _mailStore;

public static MailStore getMailStore(){
return _mailStore;
}

(MailStoreというインターフェースの中にisNewMailというメソッドは宣言されています。)

public interface MailStore{
public boolean isNewMail(String uid);
}

これらだと、最初のMain.getMailStore().isNewMail()というのは、
「まず、MainクラスのgetMailStoreメソッドを呼び出して、そこでreturnされてくるMailStore型のクラスの中の、isNewMailメソッドを呼び出している」というのを一回で書いてしまっている書き方ということで合っているでしょうか?少しピンと来ないので・・(特にreturnされるメソッド(getMailStore)にそのまま.[メソッド]という書き方をのっけるあたりが)

よろしくお願いします。

javaを勉強している者です。

少しピンと来ない書き方があるのですがそれはタイトルの通りの書き方で、具体的には

Main.getMailStore().isNewMail()

という書き方です。MailというのがクラスでgetMailStore()というのがそのクラスで宣言されているメソッドで下記のように実装されています。(MailStoreというのはインターフェースとして別のファイルで宣言されています。)

private static MailStore _mailStore;

public static MailStore getMailStore(){
return _mailStore;
}

(MailSt...続きを読む

Aベストアンサー

あってます。

Q[DOM,CSS,Fx,Opera]insertRule

IE 6.0/7.0はdeleteRuleをサポートしないようです
代替案はなんでしょうか?

http://www.webdevout.net/browser_support_dom.php

Aベストアンサー

styleSheet.removeRule( [iIndex])
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties/textjustify.asp

Opera8
document.getElementsByTagName('style')[0].appendChild(documen.createTextNode('body{background-color:green}'))

Opera9
http://jp.opera.com/docs/specs/js/dom/css/


このカテゴリの人気Q&Aランキング

おすすめ情報