io パッケージ

 キーボードから入力した文字列をアルファベット順にして表示する例題を、キー入力部分、ソートの部分、結果の表示部分を別々のクラスにして書き換えた結果です。複数のクラスからなるjavaファイルにはpublic修飾子の付くクラスは1つしか許されません。このpublic修飾子のついたクラス名をファイル名にする必要があります。

 クラスは他のプログラムから使用されることを前提に設計されるのが普通です。このプログラムのような場合はあえて別々のクラスにする必要はないでしょうけれど、クラスを設計して使用する練習になります。

 

C言語のプログラム

練習 キーボードから入力した文字列をアルファベット順にして表示

include <stdio.h>
#include <string.h>

void main(void)
{
 char name[3][20];
 char *p_name[3], *p;
 int i, j;

 printf("文字列を3回入力して下さい\n");
 for (i = 0; i < 3; i++) {
  printf("%d:", i + 1);
  scanf("%s", name[i]);
 }

 for (i = 0; i < 3; i++) {
  p_name[i] = name[i];
 }

 for (i = 0; i < 3; i++) {
  for (j = i + 1; j < 3; j++) {
   if (strcmp(p_name[i], p_name[j]) > 0) {
    p = p_name[i];
    p_name[i] = p_name[j];
    p_name[j] = p;
   }
  }
 }

 printf("アルファベット順に表示\n");
 for (i = 0; i < 3; i++) {
  printf("%s\n", p_name[i]);
 }
}





Java言語のプログラム

練習 キーボードから入力した文字列をアルファベット順にして表示

import java.io.*;

class Input {
 public void Keyin(String[] str) {
  InputStreamReader keyin = new InputStreamReader(System.in);
  BufferedReader buff = new BufferedReader(keyin);

  System.out.println("文字列を3回入力してください");
  try {
   for (int i = 0; i < str.length; i++) {
    str[i] = buff.readLine();
   }
  } catch (IOException e) {
   System.out.println("文字入力が不正です");
  }
 }
}

class Sort {
 public void bubblesort(String[] str) {
 int i, j;

  for (i = 0; i < str.length; i++) {
   for (j = i + 1; j < str.length; j++) {
    if (str[i].compareTo(str[j]) > 0) {
     String wk = str[i];
     str[i] = str[j];
     str[j] = wk;
    }
   }
  }
 }
}

class Show {
 public void show(String[] str) {
  for (int i = 0; i < str.length; i++) {
   System.out.println(str[i]);
  }
 }
}

public class StringSort2 {
 public static void main(String[] args) {
  String[] str = new String[3];

  Input in = new Input();
  in.Keyin(str);

  Show show = new Show();
  System.out.println("入力された文字列を表示");
  show.show(str);

  Sort sort = new Sort();
  sort.bubblesort(str);

  System.out.println("アルファベット順に表示");
  show.show(str);
 }
}