第11回 クラスの利用(1)

  
  
 演習
 
<演習1>
以下のソースはStudentクラスを定義して、2人のデータを表示するプログラムである。
空欄 /* ここを埋める */ を適切に埋めてプログラムを完成させなさい。

ソースファイル名は Ensyu1101.java とする。
 
class Student
{
  String name; // 名前
  int no; // 学籍番号

  /* ここを埋める */

}

class Ensyu1101
{
  public static void main(String[] args)
  {
    Student st1 = new Student();
    Student st2 = new Student();

    st1.setData("鈴木", 5401232);
    st2.setData("佐藤", 3602081);

    st1.show();
    st2.show();
  }
}

  
<実行結果>
C:\java>java Ensyu1101
 名前:鈴木, 学籍番号:5401232
 名前:佐藤, 学籍番号:3602081

C:\java>
 
 
 
<演習2>
以下は文字列を連結して表示するプログラムである。
/* ここを埋める */ を適切に埋めて、プログラムが動くようにしなさい。

ソースファイル名は Ensyu1102.java とする。
 
class Ensyu1102
{
  public static void main(String[] args)
  {
    String str1 = "Good ";
    String str2 = "morning";
    String str3 = "evening";

    System.out.println( add(str1,str2) );
    System.out.println( add(str1,str3) );
  }

  // s1 と s2 を連結して ret で返す
  static String add( String s1, String s2 ){
    StringBuffer sb = new StringBuffer();

 
  /* ここを埋める */
   
    return ret;
  }
}

    
<実行例>
C:\java>java Ensyu1102
Good morning
Good evening

C:\java>
     
 
<演習3>
キーボードから文字列(str)を入力して、続けて文字を1文字(ch)入力する。
文字列strの中に、文字chが何個含まれているかを調べて表示するプログラムを作成する。
/*(※1)*/ , /*(※2)*/ を適切に埋めて、プログラムが動くようにしなさい。

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

class Ensyu1103
{
  public static void main(String[] args)
  {
    int cnt = 0; // 含まれる個数
    Scanner sc = new Scanner(System.in);

    System.out.print("文字列を入力-->");
    String str = sc.next(); // 文字列を入力
    System.out.print("文字を1文字入力-->");
    char ch = (sc.next()).charAt(0); // 1文字を入力

    for(int i=0;i</*(※1)*/;i++){
      if( /*
(※2)*/ ) cnt++; // 文字が一致した
    }
    System.out.println(" " + ch + "の個数は " + cnt + "個です" );
  }
}

  
<実行例>
C:\java>java Ensyu1103
文字列を入力-->2012.03.21.12:40
文字を1文字入力-->0
 0の個数は 3個です

C:\java>java Ensyu1103
文字列を入力-->microsoftpowerpoint
文字を1文字入力-->o
 oの個数は 4個です

C:\java>
  
  
   
<演習4>
以下は、4桁の2進数をキーボードから入力して、10進数に変換して表示するプログラムである。
/*(※1)*//*(※4)*/ を適切に埋めてプログラムが動くようにしなさい。

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

class Ensyu1104
{
  public static void main(String[] args)
  {
    Scanner sc = new Scanner(System.in);
    int sum = 0;
    int bin = 1;

    System.out.print("4桁の2進数を入力-->");
    String str = sc.next(); // 文字列を入力

    if( /*(※1)*/ ) sum += bin; //4文字目が'1'なら +(2の0乗)
    bin *= 2;
    if(
/*(※2)*/ ) sum += bin; //3文字目が'1'なら +(2の1乗)
    bin *= 2;
    if(
/*(※3)*/ ) sum += bin; //2文字目が'1'なら +(2の2乗)
    bin *= 2;
    if(
/*(※4)*/ ) sum += bin; //1文字目が'1'なら +(2の3乗)

    System.out.println(str + "の10進数は " + sum + " です" );
  }
}

  
<実行例>
C:\java>java Ensyu1104
4桁の2進数を入力-->1111
1111の10進数は 15 です

C:\java>java Ensyu1104
4桁の2進数を入力-->1100
1100の10進数は 12 です

C:\java>java Ensyu1104
4桁の2進数を入力-->0011
0011の10進数は 3 です

C:\java>
  
  
 
<演習5>
以下はキーボードから拡張子付きのファイル名を入力して、拡張子のみを切り出し・表示するプログラムである。
/* (※1) *//* (※2) */ に適切な内容を埋めてプログラムが動くようにしなさい。

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

class Ensyu1105
{
  public static void main(String[] args)
  {
    Scanner sc = new Scanner(System.in);
    int index;
    String res;

    System.out.print("ファイル名を入力-->");
    String str = sc.next(); // 文字列を入力

    index =
/*(※1)*/ // ピリオドの位置を調べる
    res =
/*(※2)*/ // ピリオドより後ろの文字列を取得

    System.out.println(str + "の拡張子は " + res + " です" );
  }
}

   
<実行例>
C:\java>java Ensyu1105
ファイル名を入力-->document.txt
document.txtの拡張子は txt です

C:\java>java Ensyu1105
ファイル名を入力-->index.html
index.htmlの拡張子は html です

C:\java>
  

 
<演習6>
以下はキーボードから文字列を入力して、その文字数を表示するプログラムである。
また、文字列の入力は"end"が入力されるまで繰り返すものとする。

/* ここを埋める */ に適切な内容を埋めて、プログラムが動くようにしなさい。

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

class Ensyu1106
{
  public static void main(String[] args)
  {
    Scanner sc = new Scanner(System.in);
    int len; // 文字列の長さ

    while(true){
      System.out.print("文字列を入力-->");
      String str = sc.next(); // 文字列を入力

      /* ここを埋める */

    }
  }
}

  
<実行結果>
C:\java>java Ensyu1106
文字列を入力-->Hyper
Hyperの文字数は 5
文字列を入力-->Text
Textの文字数は 4
文字列を入力-->Markup
Markupの文字数は 6
文字列を入力-->Language
Languageの文字数は 8
文字列を入力-->end

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

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


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

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

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