第12回 クラスの利用(2)

 
 演習
 
<演習1>
キーボードから半径(実数値)を入力して、円周の長さを計算・表示する。
空欄 /* ここを埋める */ を適切に埋めてプログラムを完成させなさい。

ソースファイル名は Ensyu1201.java とする。
 
import java.util.Scanner;

class Ensyu1201
{
  public static void main(String[] args)
  {
    Scanner sc = new Scanner(System.in);
    double radius;

    System.out.print("半径入力(実数値)--> ");
    radius = sc.nextDouble(); // 実数値を入力

    System.out.println(" 円周の長さ = " +
/* ここを埋める */ );
  }
}

  
<実行結果>
C:\java>java Ensyu1201
半径入力(実数値)--> 0.5
 円周の長さ = 3.141592653589793

C:\java>java Ensyu1201
半径入力(実数値)--> 1.2
 円周の長さ = 7.5398223686155035

C:\java>
 
 
 
<演習2>
キーボードから角度(a度、実数値)を入力して、三角関数の sin(a),cos(a) を表示する。
/*(※1)*/〜/*(※3)*/ を適切に埋めて、プログラムを完成させなさい。
三角関数の引数はラジアン度数に変換する必要がある。
 普通の角度 =  0°、30°、45°、90°、180°など
 ラジアン度数 = 0、1/6π、1/4π、π、2π など

   angle°(度)をラジアン度数 rad に変換する --> rad = (angle/180.0)*π

ソースファイル名は Ensyu1202.java とする。
 
import java.util.Scanner;

class Ensyu1202
{
  public static void main(String[] args)
  {
    Scanner sc = new Scanner(System.in);
    double angle,rad;

    System.out.print("角度を入力(実数値)--> ");
    angle = sc.nextDouble(); // 実数値を入力

    rad =
/*(※1)*/ // ラジアン度数に変換
    System.out.println(" sin(" + angle + ") = " +
/*(※2)*/ );
    System.out.println(" cos(" + angle + ") = " +
/*(※3)*/ );
  }
}

    
<実行例>
C:\java>java Ensyu1202
角度を入力(実数値)--> 30.0
 sin(30.0) = 0.49999999999999994
 cos(30.0) = 0.8660254037844387

C:\java>java Ensyu1202
角度を入力(実数値)--> 45.0
 sin(45.0) = 0.7071067811865475
 cos(45.0) = 0.7071067811865476

C:\java>java Ensyu1202
角度を入力(実数値)--> 90.0
 sin(90.0) = 1.0
 cos(90.0) = 6.123233995736766E-17

C:\java>
     
 
<演習3>
キーボードから整数値 n を入力して、2の nを計算・表示しなさい。
Mathクラスのメソッドを用いること。

ソースファイル名は Ensyu1203.java とする。
    
<実行例>
C:\java>java Ensyu1203
nを入力(整数値)--> 3
 2の 3 乗 = 8.0

C:\java>java Ensyu1203
nを入力(整数値)--> 5
 2の 5 乗 = 32.0

C:\java>java Ensyu1203
nを入力(整数値)--> 8
 2の 8 乗 = 256.0

C:\java>

  
  
   
<演習4>
キーボードから整数値 smallbig を入力して、最小値 small 、最大値 big整数値の乱数を100個発生させて表示する。
/* ここを埋める */ を適切に埋めてプログラムが動くようにしなさい。

ソースファイル名は Ensyu1204.java とする。
 
import java.util.Scanner;

class Ensyu1204
{
  public static void main(String[] args)
  {
    Scanner sc = new Scanner(System.in);
    int small,big,rnd;

    System.out.print("最小値を入力(整数値)--> ");
    small = sc.nextInt(); // 整数値を入力
    System.out.print("最大値を入力(整数値)--> ");
    big = sc.nextInt(); // 整数値を入力

    for(int i=0;i<100;i++){
      rnd =
/* ここを埋める */;
      System.out.print(" " + rnd );
    }
  }
}

  
<実行例>
C:\java>java Ensyu1204
最小値を入力(整数値)--> 1
最大値を入力(整数値)--> 9
 1 2 8 4 2 7 3 3 7 3 4 3 4 1 5 5 6 2 6 9 6 6 8 2 7 3 2 8 8 1 4 4 2 9 1 7 9 9 1 6 7 8 8 3 1 6 6 7 4 1 9 3 9 1 3 8 2 6 8 1 6 1 3 9 8 7 6 9 5 6 6 8 6 8 6 1 7 6 5 7 3 4 3 8 4 7 5 2 3 4 4 2 4 3 3 2 5 4 3 1

C:\java>java Ensyu1204
最小値を入力(整数値)--> -5
最大値を入力(整数値)--> 5
 1 -5 3 -2 -2 -2 0 4 -1 2 1 5 -1 -3 5 -4 5 -3 3 -1 3 2 4 0 4 -5 4 -3 -4 -4 3 0 3 3 5 2 -4 4 3 4 1 -1 -5 0 3 -1 4 2 -4 -1 1 2 -1 -5 -1 -2 5 -5 5 1 4 2 -2 -1 4 -2 2 2 1 -4 3 -3 -2 1 3 1 5 -4 4 0 -2 -3 -2 5 -3 1 -3 -2 4 2 5 4 2 2 1 -5 -4 5 -4 4

C:\java>
  
  
 
<演習5>
以下はMeibo クラスを定義して、オブジェクトの配列で処理するプログラムである。
Meibo クラスはメンバ変数 String name; とコンストラクタを持つ。
5人分の名前をキーボードから入力し、続けて5人分の名前を表示する。
/* (※1) *//* (※3) */ に適切な内容を埋めてプログラムが動くようにしなさい。

ソースファイル名は Ensyu1205.java とする。
  
import java.util.Scanner;

class Ensyu1205
{
  public static void main(String[] args)
  {
    Meibo [] mb = new Meibo[5];
    Scanner sc = new Scanner(System.in);

    for(int i=0;i<
/*(※1)*/;i++){
      System.out.print("名前を入力--> ");
      String s = sc.next(); // 文字列を入力
      mb[i] =
/*(※2)*/
    }

    for(int i=0;i<
/*(※1)*/;i++){ // 名前を表示
      System.out.println(" 名前:" +
/*(※3)*/ );
    }
  }
}

class Meibo
{
  String name; // 名前

  public Meibo( String s ){ // コンストラクタ
    name = new String( s );
  }
}

   
<実行例>
C:\java>java Ensyu1205
名前を入力--> suzuki
名前を入力--> tanaka
名前を入力--> satoh
名前を入力--> yoshida
名前を入力--> nakamura
 名前:suzuki
 名前:tanaka
 名前:satoh
 名前:yoshida
 名前:nakamura

C:\java>
  

 
<演習6>
以下のメンバを持つ Point クラスを定義する。
   String name; // 都市名
   double x,y; // 座標(ある基準点からの南北、東西の位置、km)
   public Point(・・・) // 引数ありコンストラクタ

そして、 Point クラスのオブジェクトを配列で宣言し、5個の都市のデータを表示する。
/* (※1) *//* (※4) */ に適切な内容を埋めてプログラムが動くようにしなさい。

ソースファイル名は Ensyu1206.java とする。
   
class Ensyu1206
{
  public static void main(String[] args)
  {
    Point [] pt = new Point[5];

    pt[0] = new Point("名古屋", 688.7, 161.3 );
    pt[1] = new Point("大阪", 534.0, 103.5 );
    pt[2] = new Point("岡山", 356.1, 100.1 );
    pt[3] = new Point("広島", 193.6, 70.1 );
    pt[4] = new Point("北九州", 18.9, 14.5 );

    for(int i=0;i<5;i++) show(
/*(※1)*/ );
  }
 
  public static void show(
/*(※2)*/ ){ // 内容を表示
    System.out.println( /*(※3)*/ );
  }
}

class Point
{
  String name; // 都市名
  double x, y; // 座標(位置)

  public Point(
(※4) ){ // コンストラクタ
    name = new String( s );
    x = dx;
    y = dy;
  }
}

  
<実行結果>
C:\java>java Ensyu1206
名古屋 [688.7, 161.3]
大阪 [534.0, 103.5]
岡山 [356.1, 100.1]
広島 [193.6, 70.1]
北九州 [18.9, 14.5]

C:\java>
  
  
演習問題の提出について
演習1演習6のプログラムソースの内容をTextファイルに記述して、Cerezo から提出しなさい。
上記の内容をすべて1個のTextファイルにまとめ、ファイル名は

   [自分の学籍番号]+"_演習12.txt"  
  (例:"5412016_演習12.txt"、"5412003_演習12.txt" など


のように保存してから提出すること。
提出物には学籍番号と氏名を必ず記載しておくこと。
 
<提出ファイルの作成例>
第12回演習問題の回答  5412099 福山太郎

- 演習1 -----------------------------------------
class Ensyu1201
{
  public static void main(String[] args) 
  {
      : 
  }
}

- 演習2 -----------------------------------------
class Ensyu1202
{
  public static void main(String[] args) 
  {
      : 
      :