切換
舊版
前往
大廳
主題

Java Programming Lesson 08

ジャネス | 2011-08-03 16:32:57 | 巴幣 0 | 人氣 299

Java言語プログラミングレッスン上巻

★★★★★

第08章:メソッド

メソッドの例
Integer.parseInt
println
readLine
static

public static int halve (int n) {
              ↑n 引数
             ↑int 引数の型
          ↑halve メソッド名
       ↑int 戻り値の型、int型(void 戻り値なし)
     ↑static メソッドの種類:クラスメソッド
 ↑public アクセス制御:公開されているメソッド

Discount1.java(半額の計算をするプログラム)
----------
public class Discount1 {
  public static void main(String[] args) {
    int p, q;
    p = 10000;
    q = p / 2;
    System.out.println("元の値段が" + p + "円なら、半額だと" + q + "円になります。");
  }
}  
----------
画面に
javac Discount1.java
java Discount

元の値段が10000円なら、半額だと5000円になります。
----------

メソッド宣言の一般形
----------
戻り値の型 メソッド名(引数列)
{
  処理
  return文
}

Discount2.java(メソッドhalveを使って半額の計算)
----------
public class Discount2 {
  public static void main(String[] args) {
    int p, q;
    p = 10000;
  q = halve(p);
    System.out.println("元の値段が" + p + "円なら、半額だと" + q + "円になります。");
  }
public static int halve(int n) {
return n / 2;
}
}
----------
画面に
javac Discount2.java
java Discount2

元の値段が10000円なら、半額だと5000円になります。
----------

メソッドのさまざまな例

Graph1.java(1本だけのグラフ表示)
----------
public class Graph81 {
  public static void main(String[] args) {
    printGraph(10);
  }
  public static void printGraph(int x ) {
  for (int i = 0; i < x; i++) {
      System.out.print("*");
    }
  }
}
----------
画面に
javac Graph81.java
java Graph81

**********
----------

Power1.java(引数が2つのメソッド)
----------
public class Power1 {
  public static void main(String[] args) {
    System.out.println(getPower(8, 2));
  }
  /* x の n 乗の計算 */
  public static int getPower(int x, int n) {
    int y = 1;
    for (int i = 0; i < n; i++) {
      y = y * x;
    }
    return y;
  }
}
----------
画面に
javac Power1.java
java Power1

64
----------

学んだこと
。メソッドの宣言と呼び出し
。メソッドの引数と戻り値

練習問題8-1

正しいものに○、誤っているものに×
○ (1) メソッドは名前を持っている
× (2) メソッドは必ずreturn文を含んでいる
    メソッドの戻り値の型がvoidの場合には、return文を1つも含まないことがある
× (3) メソッドは必ず1つ以上の引数を持っている
    引数が0個の(引数がない)メソッドもある。
    例えば、BufferedReaderクラスのメソッドreadLineが引数がない。
× (4) メソッドの中から別のメソッドを呼び出すことはできない
    呼び出すことはできる
× (5) 1つのクラスにはメソッドが1つだけ含まれている
    1つのクラスにはメソッドがいくつ含まれていてもかまわない

練習問題8-2

Graph2.java(放射線を書くプログラム)
----------
public class Graph2 {
  public static void main(String[] args) {
    for (int n = -8; n <= 8; n++) {
      printGraph(n * n);
    }
  }
  public static void printGraph(int x ) {
  for (int i = 0; i < x; i++) {
      System.out.print("*");
    }
  System.out.println("");
  }
}
----------
画面い
javac PowerGraph.java
java PowerGraph

****************************************************************
*************************************************
************************************
*************************
****************
*********
****
*

*
****
*********
****************
*************************
************************************
*************************************************
****************************************************************
----------

練習問題8-3

メソッドの名前として、文法上許されるものに○、コンパイルエラーになるものに×
○ (1) printGraph
○ (2) print_Graph
× (3) print-graph (- を使えない)
○ (4) PRINTGRAPH
× (5) 1st_2nd_3rd (数字で始まってはいけない)
○ (6) 設定解除
× (7) public   (予約語なので)
○ (8) α

練習問題8-4

PowerGraph.java(メソッド、メソッドの引数、局所変数の一覧を作ってください)
----------
public class PowerGraph {
  public static void main(String[] args) {
    for (int i = -8; i <= 8; i++) {
      if (i < 0) {
        printGraph(getPower(i, 2), '-');
      } else {
        printGraph(getPower(i, 2), '+');
      }
    }
  }
  /* x の n 乗の計算 */
  public static int getPower(int x, int n) {
    int y = 1;
    for (int i = 0; i < n; i++) {
      y = y * x;
    }
    return y;
  }
  /* '*' でグラフ表示 */
  public static void printGraph(int x ) {
    printGraph(x, '*');
  }
  /* 指定した文字でグラフ表示 */
  public static void printGraph(int x, char c) {
    for (int i = 0; i < x; i++) {
      System.out.print(c);
    }
    System.out.println("");
  }
}
----------
画面に
javac PowerGraph.java
java PowerGraph

----------------------------------------------------------------
-------------------------------------------------
------------------------------------
-------------------------
----------------
---------
----
-

+
++++
+++++++++
++++++++++++++++
+++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
----------

mainメソッド (2-10行目)
。引数:args (String型)
。変数:i  (int型)

getPowerメソッド (12-18行目)
。引数:x (int型)
    n (int型)
。変数:y (int型)
    i (int型)
printGraphメソッド (20-22行目)
。引数:x (int型)

printGraphメソッド (24-29行目)
。引数:x (int型)
    c (char型)
。変数:i (int型)

練習問題8-5

以下のプログラムはうまく動作しない。どうしたら2つの文字列を返すことができるでしょうか。

MethodTest.java(メソッドから2つの文字列を返せるのだろうか?)
----------
public class MethodTest {
  /* "結城" と "浩" の2つの文字列を返すメソッド(?) */
  public static void getYourName(String myoji, String namae) {
    myoji = "結城";
    namae = "浩";
    
  }
  public static void main(String[] args) {
    String x;
    String y;
    getYourName(x, y);
    System.out.println("名字は" + x );
    System.out.println("名前は" + y);
  }
}
----------
画面に
javac MethodTest.java

MethodTest.java:11: 変数 x は初期化されていない可能性があります。
    getYourName(x, y);
          ^
MethodTest.java:11: 変数 y は初期化されていない可能性があります。
    getYourName(x, y);
            ^
エラー 2 個
----------

MethodTest1.java(配列を戻り値にする方法1)
----------
public class MethodTest1 {
  public static String[] getYourName() {
  String[] myoji_namae = { "結城", "浩" };
    return myoji_namae;
  }
  public static void main(String[] args) {
  String[] s = getYourName();
    System.out.println("名字は" + s[0]);
    System.out.println("名前は" + s[1]);
  }
}
----------
画面に
javac MethodTest1.java
java MethodTest1

名字は結城
名前は浩
----------

MethodTest2.java(配列を戻り値にする方法2)
----------
public class MethodTest2 {
  public static String[] getYourName() {
  String[] myoji_namae = new String[2];
  myoji_namae[0] = "結城";
  myoji_namae[1] = "浩";
    return myoji_namae;
  }
  public static void main(String[] args) {
  String[] s = getYourName();
    System.out.println("名字は" + s[0]);
    System.out.println("名前は" + s[1]);
  }
}
----------
画面に
javac MethodTest2.java
java MethodTest2

名字は結城
名前は浩
----------

MethodTest3.java(配列を引数に渡して、要素に代入する方法)
----------
public class MethodTest3 {
  public static void getYourName(String[] args) {
  args[0] = "結城";
  args[1] = "浩";
  }
  public static void main(String[] args) {
  String[] s = new String[2];
  getYourName(s);
    System.out.println("名字は" + s[0]);
    System.out.println("名前は" + s[1]);
  }
}
----------
画面に
javac MethodTest3.java
java MethodTest3

名字は結城
名前は浩
----------

MethodTest4.java(新たなクラスを作り、それを戻り値にする方法)
----------
class MyojiNamae {
String myoji;
String namae;
}

public class MethodTest4 {
  public static MyojiNamae getYourName() {
  MyojiNamae obj = new MyojiNamae();
  obj.myoji = "結城";
  obj.namae = "浩";
  return obj;
  }
  public static void main(String[] args) {
  MyojiNamae mn = getYourName();
    System.out.println("名字は" + mn.myoji);
    System.out.println("名前は" + mn.namae);
  }
}
----------
画面に
javac MethodTest4.java
java MethodTest4

名字は結城
名前は浩
----------

★★★★★

第8章 終わり

創作回應

相關創作

更多創作