レポート#1 初めてのjava  

Name       :Tadashi,Nakamura
Student-ID :035737F

********************************* 課題 ************************************

例題Helloを以下のように書き換えて、出力せよ。
a.出力するメッセージを変更せよ。
b.同じメッセージを3回、別々の行に出力せよ。
c.「Hello,」と「Java World!」を別々の行に出力せよ。
d.System.out.println(…)とSystem.out.print(…)の違いについて延べよ。
e.同じメッセージを3回、同一行に出力せよ。
f.次のような菱形模様(「*」を用いる)を出力せよ。
  *
 ***
*****
 ***
  *
g.「*」を用いて、自分の好きな形を出力せよ。



******************************* 課題のソース ********************************

[nw0337:~/prog2] j03037% cat hello.java
class hello {
    public static void main (String[] args) {
        System.out.println("\n\ta & b\n");
        System.out.println("\"Someday over the rainbow\"");
        System.out.println("\"Someday over the rainbow\"");
        System.out.println("\"Someday over the rainbow\"");
        System.out.println("\n\tc\n");
        System.out.println("Hello.");
        System.out.println("Java World.");
        System.out.println("\n   \"d?" is not here.\n");
        System.out.println("\n\te\n");
        System.out.print("Hey!");
        System.out.print("Hey!");
        System.out.println("Hey!");
        System.out.println("\n\tf\n");
        System.out.println("   *");
        System.out.println("  * *");
        System.out.println(" * * *");
        System.out.println("  * *");
        System.out.println("   *\n");
        System.out.println("\n\tg\n");
        System.out.println("  *    *    *");
        System.out.println("* * * * * * * *");
        System.out.println("  *    *    *");
        System.out.println("  *    * * **");
        System.out.println("  *");
        System.out.println("  * * * * * * *");
        System.out.println("\n");
        System.out.println("  * * * * * *");
        System.out.println("  *    *    *");
        System.out.println("  * * * * * *");
        System.out.println("  *    *    *");
        System.out.println("  * * * * * *");
        System.out.println("   *       *");
        System.out.println("  *  *   *  *");
        System.out.println("     *   *   ");
        System.out.println("     *   *");
        System.out.println("\n");
        System.out.println("  * * * * * * *");
        System.out.println("    *   *   *");
        System.out.println("     *  *  *");
        System.out.println("   * * * * * *");
        System.out.println("        *");
        System.out.println("        *");
        System.out.println("        *");
        System.out.println("\n");
        System.out.println("     *");
        System.out.println("   * *");
        System.out.println("  * * * *  * * *");
        System.out.println("   * * *   *   *");
        System.out.println("  *  *  *  *   *");
        System.out.println("     *     * * *");
    }
}

******************************* 実行結果 **********************************

[nw0337:~/prog2] j03037% java hello

        a & b

"Someday over the rainbow"
"Someday over the rainbow"
"Someday over the rainbow"

        c

Hello.
Java World.

   "d" is not here.


        e

Hey!Hey!Hey!

        f

   *
  * *
 * * *
  * *
   *


        g

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


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


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


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


/*************************** dについて ***************************

  printlnは自動的に文の最後に改行の命令をします。
  printは改行を行いません。

******************************** 考察 ****************************

  コンパイルエラーについて。

 試しにこのようなプログラムを作ってみた。

[Tadashi-NAKAMURA:~/prog2] j03037% cat Test.java 
class Test {
    public static void main (String[] args)
        }

 これをコンパイルしてみた結果が

[Tadashi-NAKAMURA:~/prog2] j03037% javac Test.java 
Test.java:2: ';' expected
    public static void main (String[] args)
                                           ^
Test.java:2: missing method body, or declare abstract
    public static void main (String[] args)
                       ^
2 errors

 となった。一つ目のエラーは単純なミスなので良いとして、やはりメソッド
がないとコンパイルできないようだ。それなら

[Tadashi-NAKAMURA:~/prog2] j03037% cat Test.java
class Test {
    
        }
 とやってみる。すると

[Tadashi-NAKAMURA:~/prog2] j03037% javac Test.java
[Tadashi-NAKAMURA:~/prog2] j03037% java Test
Exception in thread "main" java.lang.NoSuchMethodError: main

 と出た。コンパイルができた。ついでに実行もできる(なにも出ずにプロン
プトが出る)と思ったが、きちんと中身がないと言ってくれた。mainがなくて
もコンパイルエラーにならないのが面白いと思った。

 javaのプログラムは間違っている場所まで^で示してくれる。また実行でき
ないものは実行時にこのようなことがおかしいと教えてくれるようだ。


******************************* 感想,反省 ***************************

  コンパイルエラーについて考察せよとあるのを直前に気が付き、かなりあ
せった。また課題bやfはint文を使えばもっと楽になったかもと思っている。
まだまだ授業は始まったばかりなのでこれからはしっかり頑張りたい。