Lecture

Java プログラミング入門

このページは、学部2年生向け授業である、「マルチメディアプログラミング実習」 のために用意しました。

(Wikiの仕様で大文字小文字が混在した英単語に疑問符?が追加されるところがありますが、無視してください。)

第3章

Javaにおける基本データ型

C言語と違い、整数型のサイズが明確に決められました。char型は、C言語では1バイトでしたが、Javaでは1文字を表します。なので、コードによって1バイトだったり、多バイトだったりします。C言語では論理型がないので、charやintで代用していました。0とか1を代入してました。Javaでは専用のboolean型が用意されました。

先に作ったHello.javaを参考にVartest.javaというプログラムを作りましょう。 以下では、byte型変数を定義して、それを表示しています。 変数名は変えても良いです。 printlnの中では、文字列を連結しています。Javaでは文字列を+で連結できます。

class Vartest {  
public static void main (String args[]) {
	int x = 42;
        System.out.println("byte value x =" + x);
        }
}

これをもとに、short, int, long, char, float, double booleanの変数を全て追加して表示をしてください。intとcharを追加するなら、以下のようにします。変数名と代入する値は好きなものを使ってください。char型は漢字も試してください。ただしchar型は、1文字だけです。

class Vartest {  
public static void main (String args[]) {
	byte x= 42;
	int x1=  123456;
	char name = '椎';
        System.out.println("byte value x =" + x);
        System.out.println("int value x1 =" + x1);
        System.out.println("char value name =" + name);
        }
}

以下のように、整数型の変数に文字を代入して値を表示すると、文字コードが表示できる。 あなたのイニシャルを表す英文字の文字コードを表示するプログラムを作成しなさい。また、あなたの氏名の最初の文字(漢字やひらがな)についても調べなさい。

int myInitialCode1 = 'S', myInitialCode2 = '椎';
System.out.println(myInitialCode1);
System.out.println(myInitialCode2);

配列

C言語では小規模な配列を使う場合、静的に確保した配列をよく使っていたと思います。 Javaではシステムからメモリー確保して動的に確保します。 C言語でもmalloc()関数でメモリーを確保したことがあると思います。 同じやり方です。 システムにお願いして、必要な量の配列を格納するメモリー領域を確保してもらいます。そのコマンドがnewです。

http://gyazo.com/8159f78165e17781a7110de3763c833c.png

ヒント

class ArgsTest {  
public static void main (String args[]) {
	System.out.println(args[0]);
        }
}

解答

第4章

第5章

演習

乱数を10個表示する

public class Score {
	public static void main (String argv[]) {
		int i,a;
		for(i=0;i<10;i++) {
			a=(int)(Math.random() * 100);
			System.out.println(a);
		}
	}
}

次にこの乱数を点数とみなして、演習問題5.4の基準に従ってABCDを表示するプログラムを書け。 動作例を以下に示す。

http://gyazo.com/829b04a7fc82cdfe9dd0dfa650af873e.png

解答例:

public class Score {
	public static void main (String argv[]) {
		int i,a;
		for(i=0;i<10;i++) {
			a=(int)(Math.random() * 100);
			System.out.print(a + " ");
			if(a<40) System.out.println("D");
			else if(a<60) System.out.println("C");
			else if(a<80) System.out.println("B");
			else System.out.println("A");
		}
	}
}

http://gyazo.com/1733defca0c709c41c69ea729320ab61.png

解答例:

class Kinri {
public static void main (String args[]) {
	double okane=100000;
	int year;
	year=1;
	while(okane < 200000) {
		okane = okane * 1.05;
		System.out.println("year = " + year + "  okane= " + okane);
	 	year++;
	}
}
}

現在の普通預金の金利0.04%だと倍になるのに何年かかるだろうか。確かめてみよう。

http://gyazo.com/95cd94db39b407e7961355b20da8fc67.png

while文をfor文に変えてみる

解答例:

class Kinri {
public static void main (String args[]) {
	double okane=100000;
	int year;
	for(year=1;okane < 200000; year++) {
		okane = okane * 1.05;
		System.out.println("year = " + year + "  okane= " + okane);
	}
}
}

モンテカルロ法で円周率を計算してみる(ループの練習)

http://gyazo.com/e4f68c7ed1045c10801ec201ed00b5e6.png

class MonteCarlo {  
public static void main (String args[]) {
	int i;
	for(i=0;i<100;i++)
        System.out.println(Math.random());
        }
}

矢の落下点x,yをランダムな位置にするには、乱数で指定します。 これがあたりかどうかは、原点からの距離で調べます

			x = Math.random();
			y = Math.random();
			if(x*x + y*y < 1)  hit++;
class MonteCarlo {
	public static void main (String args[]) {
		int i;
		double hit = 0;
		double x, y;
		for(i=0;i<1000;i++) {
			x = Math.random();
			y = Math.random();
			if(x*x + y*y < 1) {
				hit++;
			}
		}
		System.out.println(4 * hit / 1000);	
	}
}

for-each文は新しい手法なので練習しましょう

class ArrayTest {  
public static void main (String args[]) {
	int[] vec = new int[3];
	vec[0]=1;
	vec[1]=2;
	vec[2]=3;
	for (int x: vec) {
	     System.out.println(x);
	     }
       }
}

演習

mainの引数argsは、Stringの配列で、コマンドラインで起動したとき、 コマンドの後に続けた書いた文字が入っています。 args[0], args[1], args[2] .... をすべてfor-each文で 表示するプログラムを書いてみましょう。

http://gyazo.com/8d8effac163e0dc939e74f237d8507b1.png

ヒント:for(String s: args)を使います

class ArgsTest2 {  
public static void main (String args[]) {
	for(String s: args) 
	    System.out.println(s);
       }
}

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS