10, 20, 30 -10, -20, -30 74.83314773547883
という結果が出るようにしましょう
public static void main(String argv[]) { Point3D pt1 = new Point3D(); Point3D pt2 = new Point3D(); pt1.set(10, 20, 30);//インスタンス変数を設定 pt2.set(-pt1.getx(), -pt1.gety(), -pt1.getz()); pt1.print();//インスタンスメソッド呼出 pt2.print(); System.out.println(pt1.distance(pt2)); }
double distance ( int ptx, int pty, int ptz ) { int dx = ptx - this.x; int dy = pty - this.y; int dz = ptz - this.z; return Math.sqrt(dx * dx + dy * dy + dz * dz); } double distance ( Point3D p ) { return this.distance(p.getx(), p.gety(), p.getz()); }
double distance ( int ptx, int pty ) { int dx = ptx - this.x; int dy = pty - this.y; return Math.sqrt(dx * dx + dy * dy); } double distance ( Point p ) { return this.distance(p.getx(), p.gety()); }
distanceという名前は同じでも、引数の違いで、異なる動作をさせることができます。
public static void main(String argv[]) { Osaifu saifu1 = new Osaifu(); Osaifu saifu2 = new Osaifu(); saifu1.in(1000); saifu2.in(500); saifu1.print(); saifu2.print(); saifu2.in(saifu1.out(200)); saifu1.print(); saifu2.print(); }
public class Osaifu { int okane; public void in (int x) { okane += x; } public int out(int x) { okane -= x; return x; } public void print() { System.out.println( "okane = " + okane +" yen"); } public static void main(String argv[]) { Osaifu saifu1 = new Osaifu(); Osaifu saifu2 = new Osaifu(); saifu1.in(1000); saifu2.in(500); saifu1.print(); saifu2.print(); saifu2.in(saifu1.out(200)); saifu1.print(); saifu2.print(); } }
public int out(int x) { if(x < okane ) { okane = okane -x; return x; } else { int nokori = okane; okane =0; return nokori; } }
ことができるコンストラクタを作ろう。
これをmainから呼んで、上記のプログラムと同じことをするためには、
Osaifu saifu1 = new Osaifu(1000);//インスタンスを作る //最初の保持金額を1000円にする Osaifu saifu2 = new Osaifu(500);//インスタンスを作る //最初の保持金額を500円にする
とすることになる。
以下のコンストラクタを作ることになる。
Osaifu() { okane = 0; } Osaifu(int x) { okane = x; }
これは以下のように書いても良い。
Osaifu() { this(0); } Osaifu(int x) { okane = x; }
Osaifu.javaとOsaifu.classを、出席番号+名前(ローマ字)のフォルダに入れて、圧縮して、提出してください。
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文で 表示するプログラムを書いてみましょう。
ヒント:for(String s: args)を使います
class ArgsTest2 { public static void main (String args[]) { for(String s: args) System.out.println(s); } }
while文をfor文に変えてみる
できた人から2:30pmまで休憩してください。
例えば以下のような実行結果が出るようにしてください
public class Point { private int x, y; void set(int newx, int newy) {x=newx; y=newy;} int getx() { return x;} int gety() { return y;} void print () { System.out.println(x + ", " + y); } public static void main(String argv[]) { Point pt1= new Point(); Point pt2 = new Point(); pt1.set(10,20); pt2.set(-pt1.getx(), -pt1.gety()); pt1.print(); pt2.print(); } }
10, 20, 30 -10, -20, -30
という結果が出るようにしましょう
public static void main(String argv[]) { Point3D pt1 = new Point3D(); Point3D pt2 = new Point3D(); pt1.set(10, 20, 30);//インスタンス変数を設定 pt2.set(-pt1.getx(), -pt1.gety(), -pt1.getz()); pt1.print();//インスタンスメソッド呼出 pt2.print(); }
Point3D.javaとPoint3D.classを、出席番号+名前(ローマ字)のフォルダに入れて、圧縮して、提出してください。
ヒント
class ArgsTest { public static void main (String args[]) { System.out.println(args[0]); } }
解答
class ArgsTest { public static void main (String args[]) { System.out.println(args[0] + " + " + args[1]); } }
乱数を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の基準に従ってABCDEを表示するプログラムを書け。 動作例を以下に示す。
解答例:
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"); } } }
Score.javaとScore.classを、出席番号+名前(ローマ字)のフォルダに入れて、圧縮して、提出してください。
http://docs.oracle.com/javase/jp/8/docs/api/index.html
http://www.amazon.co.jp/dp/4883732258/
買ってください。もしくは、先輩から安く譲ってもらってください。
macOSはJavaと相性が良く、最初からjavaがインストールされています。 ということでWindowsより簡単に(というか何もしなくても)javaが使えます。
class Hello { public static void main (String args[]) { System.out.println("hello java world!"); } }
javac Hello.java (コンパイルする) java Hello (実行する。.javaなどの拡張子は不要) hello java world! (結果)
授業の最後の方で紹介する,Swingというフレームワークを使ってウィンドウを出してみます.
import javax.swing.JFrame; public class SimpleWindow { public static void main(String argv[]) { JFrame f = new JFrame("私が作った最初の窓"); f.setSize(200,100); f.setVisible(true); } }
これをSimpleWindow.javaという名前で保存して、
javac SimpleWindow.java java SimpleWindow
とタイプしてコンパイル/実行します。 このプログラムは,ウィンドウのクローズボタンを押しても終了しません. プログラムを停止するには,ターミナルでコントロール-cを押します.
/home/isstaff/siio/Public/Drop Box/.に提出してください。ターミナル.appからなら
cp 123456siioitiro.zip /home/isstaff/siio/Public/Drop\ Boxとしてください。ファインダーからなら、メニューから「移動」「フォルダへ移動...」を選んで 以下のように入力して、移動ボタンを押して、そこに現れるドロップボックスホルダに、ドラッグアンドドロップしてください。
/home/isstaff/siio/Public/Drop Box/.
に提出してください。ターミナル.appからなら
cp 123456siioitiro.zip /home/isstaff/siio/Public/Drop\ Box
としてください。ファインダーからなら、メニューから「移動」「フォルダへ移動...」を選んで 以下のように入力して、移動ボタンを押して、そこに現れるドロップボックスホルダに、ドラッグアンドドロップしてください。
このページについてのお問い合わせはsiio@is.ocha.ac.jpまで。