SSブログ

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

これもけっこうな力業だと思いますよ、ホント。
でも、配列内の並び替えって、アルゴリズムはひとつひとつ数値を比較して、小さい数値を前へ持って行くってことですからねぇ。
上記ソースをちょっと工夫すれば、降順ソートもできますし、入力された数値群をソートすることもできると思います。

と、いうことで配列の練習問題は以上です。
次は・・・配列の演習問題です。(練習問題と演習問題の違いは・・・教科書に載っている問題、講師から出された問題という違いです。練習問題は教科書の後ろの方に解答が載っていますが、演習問題は講師が答え合わせしてくれるまで答えが分からない。って、プログラミングに正解とかないと思いますが・・・・・・効率の良さ、ソースの見やすさ、処理速度の速さ、くらいですよね。たぶん)

 


nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:資格・学び

nice! 1

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。