Report#1:
課題:次の例題Helloを以下の条件に従って書き換えて出力しなさい。
/*プログラムの例 (Hello.java)*/
public class Hello {
public static void main(String[] argv){
System.out.println("Hello,Java world!");
}
}
|
- a.出力するメッセージを変更せよ。
- b.同じメッセージを3回、別々の行に出力せよ。
- c.『Hello,』と『Java world!』を別々の行に出力せよ。
- d.System.out.println(...)とSystem.out.print(...)の違いについて述べ
よ。
- e.同じメッセージを3回、同一行に出力せよ。
- f.次のような菱形模様(「*」を用いる)を出力せよ。
*
***
*****
***
*
- g.「*」を用いて、自分の好きな形を出力せよ。
a.出力メッセージの変更
メッセージ変更のみなのでここでは割愛します。
b.同じメッセージを3回、別々の行に出力
~ソースコード~
/*同一メッセージを3回、別々の行に出力*/
public class rep1b {
public static void main(String[] argv){
for(int n=0;n<3;n++){ /*for文でメッセージ表示を3回*/
System.out.println("Kind of blue"); /*リピート */
}
}
}
~出力結果~
[Yuta-AKAMINE:~/Javaworks] j03002% javac rep1b.java
[Yuta-AKAMINE:~/Javaworks] j03002% java rep1b
Kind of blue
Kind of blue
Kind of blue
[Yuta-AKAMINE:~/Javaworks] j03002%
c.「Hello」、「Javaworld」を別々の行に出力
/*System.out.print(....)を試験的に使用*/
public class rep1c {
public static void main(String[] argv){
System.out.print("Hello,\nJava world!\n");
System.out.println("Hello"); /*System.out.print(..)と、*/
System.out.println("Java world!"); /*System.out.println(..)の違いを*/
} /*比較するために並べて使用 */
}
~出力結果~
[Yuta-AKAMINE:~/Javaworks] j03002% javac rep1c.java
[Yuta-AKAMINE:~/Javaworks] j03002% java rep1c
Hello,
Java world!
Hello
Java world!
[Yuta-AKAMINE:~/Javaworks] j03002%
d.System.out.println(...)とSystem.out.print(..)の違いについて
Cでの比較の結果を見ると、println(..)には数字や文字を出力後に改行する機能があり、
print(..)にはその機能がない事が分かる。ただし、c言語と同様に\nで改行する部分を
指定する事ができ、バックスペースや水平タブなども指定出来る。
e.同じメッセージを3回連続で同一行に出力
/*System.out.print(..)を使った出力*/
public class rep1e {
public static void main(String[] argv){
for(int c=0;c<3;c++){ /*for文を作って一行に三回連続で*/
System.out.print("Destroy!"); /*同じ文字を出力 */
}
System.out.print("\n"); /*三回出力後に改行して終了*/
}
}
~出力結果~
[Yuta-AKAMINE:~/Javaworks] j03002% javac rep1e.java
[Yuta-AKAMINE:~/Javaworks] j03002% java rep1e
Destroy!Destroy!Destroy!
[Yuta-AKAMINE:~/Javaworks] j03002%
f.「*」を用いた菱形模様の出力
/*菱形模様の出力*/
public class rep1f {
public static void main(String[] argv){
for(int a=0;a<5;a++){ /**の必要な出力行数分に応じてfor文を設定*/
if( a==0 || a==4){ /*出力1行目と5行目に*一つ出力 */
System.out.println(" * ");
}else if( a==1 || a==3){ /*出力2行目と4行目に*三つ出力*/
System.out.println(" *** ");
}else if( a==2){
System.out.println("*****"); /*出力3行目に*五つ出力*/
}
}
}
}
~出力結果~
[Yuta-AKAMINE:~/Javaworks] j03002% javac rep1f.java
[Yuta-AKAMINE:~/Javaworks] j03002% java rep1f
*
***
*****
***
*
[Yuta-AKAMINE:~/Javaworks] j03002%
g.好きな模様を*で出力
~出力結果~
[Yuta-AKAMINE:~/Javaworks] j03002% javac rep1g.java
[Yuta-AKAMINE:~/Javaworks] j03002% java rep1g
** *** **
** *** ****
** *** *** **
** *** *** **
** *** *** **
** *** *** **
** *** *** **
*** ****************
*** *** **
*** *** **
*** *** *** **
*** *** *** **
考察と感想
コンパイルエラーについて考えようと思ったのですが、エラー表記が文字化け
を起こしたまま治らなずさっぱりでした。
でも一応文法が怪しいと思われる箇所には、その部分の段落の番号と文字化け
した文字が表示されるのでそれで修正作業は進められました。
課題の一番最後の図形の出力はSystem.out.println(...)の羅列で作りました。
あんまり手が込んでません。しょんぼりです。
話は変わりますが、頂いたプ
ログラム例の通りに、コマンドラインから入力した文字を出力するプログラムを
作ってみたのですが、コンパイルは通ったのにちゃんと動作しませんでした。
続けて調べてみたいと思います。