Java:配列の練習問題 [勉強]
こなさん、みんにちは。TVで「スッキリ!」を見ながら朝ご飯を食べた後、激しい頭痛のため13時過ぎまで寝ていた しゃくれアゴです。
今週の恒例となっていた午前中にJava javaができませんでしたが、昨日(08/11)中にやっつけてある所までUPしますかね。
職業訓練で使用している教科書(上)の第9章「配列」の練習問題です。
・・・8章「メソッド」と順番逆の方がイイんじゃないかな?って思ったりしちゃったりしたけど・・・いきます。
問題9-6:
「java SelectGreetingと実行すると『使い方:java SelectGreeting 番号』と表示され、番号の部分に0~2を入力すると『おはよう!』『こんにちは!』『こんばんは!』と表示し、0~2以外の数字が入力された場合、『番号は0~2の範囲で指定してください』と表示するプログラム」
これ、教科書にはソースが虫食い状態で載っていて、???の部分を埋めて上記のように動作するプログラムを完成させます。
問題9-7:
「???の部分を埋めて、配列dataの要素内で最大値を表示刷るプログラムを完成させよ」
問題9-8:
「???の部分を埋め、配列dataの要素を小さい順に並べ替える(ソート)プログラムを完成させよ」
と、こんな感じです。
「???の部分を埋めて」っていうのがなくても、ようするにコマンドライン引数で0~2を渡されたら挨拶するプログラム、配列data内の最大値を表示するプログラム、配列data内の値を昇順ソートするプログラム、ってことですよね。
ソートって、昇順ソートとかしてくれるメソッドがあった気がするけど、それを使っちゃダメみたいです。
for文とか使って、ゴリゴリとソートするんですねぇ。
ではでは・・・
以下、問題9-6の回答ソースです。
public class SelectGreeting {
public static void main(String[] args) {
String[] message;
message = new String[3];
message[0] = "おはよう!";
message[1] = "こんにちは!";
message[2] = "こんばんは!";
if (args.length != 1) {
System.out.println("使い方:java SelectGreeting 番号");
System.exit(0);
}
int num = Integer.parseInt(args[0]);
if (0 <= num && num < message.length) {
System.out.println(message[num]);
} else {
System.out.println("番号は0~2の範囲で指定してください。");
}
}
}
それほど難しくない感じですねぇ。
では、次。問題9-7の回答ソースです。
public class ShowMaxData {
public static void main(String[] args) {
int[] data = { 31, 41, 59, 26, 53, 58, 97, 93, 23, 84 };
int max_data = data[0];
for (int i = 0; i < data.length; i++) {
if (data[i] > max_data) {
max_data = data[i];
}
}
System.out.println("最大値は" + max_data +"です。");
}
}
正直、ここまでの練習問題はC言語の知識があればサクサク解けますね。
(コマンドライン引数は知らないけど)
で、最後。問題9-8の回答ソースです。
public class SortData {
public static void main(String[] args) {
int[] data = { 31, 41, 59, 26, 53, 58, 97, 93, 23, 84 };
System.out.println("並べ替える前");
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
for (int i = 0; i < data.length - 1; i++) {
for (int j= i + 1; j < data.length; j++) {
if (data[i] > data[j]) {
int tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}
}
}
System.out.println("並べ替えた後");
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
}
}
これもけっこうな力業だと思いますよ、ホント。
でも、配列内の並び替えって、アルゴリズムはひとつひとつ数値を比較して、小さい数値を前へ持って行くってことですからねぇ。
上記ソースをちょっと工夫すれば、降順ソートもできますし、入力された数値群をソートすることもできると思います。
と、いうことで配列の練習問題は以上です。
次は・・・配列の演習問題です。(練習問題と演習問題の違いは・・・教科書に載っている問題、講師から出された問題という違いです。練習問題は教科書の後ろの方に解答が載っていますが、演習問題は講師が答え合わせしてくれるまで答えが分からない。って、プログラミングに正解とかないと思いますが・・・・・・効率の良さ、ソースの見やすさ、処理速度の速さ、くらいですよね。たぶん)
コメント 0