二十二日目は試しに動かしてみた

昨日は忙しかったから勉強は無し。さすがに業務優先ですぜっていうか業務時間内に勉強してんなよっていうツッコミは無しの方向で。

先日からダメ出しもらってるクラスを実際に使ってみようと、組んでみた。さてさて…

import java.io.*;

//座標値を格納するクラス
class MyPoint
{
	//フィールド
	private int X;
	private int Y;
	
	//コンストラクタ
	public MyPoint()
	{
		//初期座標を(0,0)とする
		X = 0;
		Y = 0;
	}
	public MyPoint(int x,int y)
	{
		//初期座標を指定する
		setX(x);
		setY(y);
	}
	
	//メソッド
	public void setX(int px)
	{
		//X座標の設定
		if(0 <= px && px <= 100){
			X = px;
		}
		else{
			System.out.println("値が不正です");
			System.out.println("X座標を初期化します");
			X = 0;
		}
	}
	public void setY(int py)
	{
		//y座標の設定
		if(0 <= py && py <= 100){
			Y = py;
		}
		else{
			System.out.println("値が不正です");
			System.out.println("Y座標を初期化します");
			Y = 0;
		}
	}
	public int getX()
	{
		//x座標を得る
		return X;
	}
	public int getY()
	{
		//y座標を得る
		return Y;
	}
}
public class printMyPoint {

	public static void main(String[] args) throws IOException
	{
		//変数の宣言
		int xp = 0;
		int yp = 0;
		String str;
		
		System.out.println("座標の初期化を行いますか?");
		System.out.println("Y/N");
		
		BufferedReader br = new BufferedReader
		(new InputStreamReader(System.in));
		str = br.readLine();
		char ans = str.charAt(0);
		
		if(ans == 'Y' || ans == 'y'){
			MyPoint MP1 = new MyPoint();
			System.out.println("座標を初期化しました");

			System.out.println("X座標を入力して下さい");
			System.out.println("範囲(0-100)");
			str = br.readLine();
			int xx = Integer.parseInt(str);

			System.out.println("Y座標を入力して下さい");
			System.out.println("範囲(0-100)");
			str = br.readLine();
			int yy = Integer.parseInt(str);
			
			MP1.setX(xx);
			MP1.setY(yy);
			
			xp = MP1.getX();
			yp = MP1.getY();
			System.out.println
			("X座標は" + xp + "、Y座標は" + yp + "です");
		}
		else if(ans == 'N' || ans == 'n'){
			
			System.out.println("X座標を入力して下さい");
			System.out.println("範囲(0-100)");
			str = br.readLine();
			int xx = Integer.parseInt(str);

			System.out.println("Y座標を入力して下さい");
			System.out.println("範囲(0-100)");
			str = br.readLine();
			int yy = Integer.parseInt(str);
			
			MyPoint MP2 = new MyPoint(xx,yy);		
						
			xp = MP2.getX();
			yp = MP2.getY();
			
			System.out.println
			("X座標を" + xp + "、Y座標を" + yp + "と設定しました");
		}
		else{
			System.out.println("YかNで答えてください");
			System.out.println("プログラムを終了します");
		}
		
	}

}

なんとなく動いたのでよしとしよう。装飾付コンストラクタを呼び出した場合に、X・Y共に値を入れてからしか判定できないのも…まあよしとしよう。
何が問題かって、前回までずっと判定部分で"0以上かつ100以上であれば"という意味不明な判定をしていたこと…実際に動かすまで気づかんかったorz