階乗と整除

2272 ワード

整数nに対して、nの階乗はnと表される。定義は以下のとおりです。=1 n!=n*(n-1)nとmを与えて、nを聞きますmの倍数ですか?nとmは全部32ビットの整数範囲内であり、mは0ではない。は、1と0を返します。
public class Test {
	public static void main(String[] args) {
		Test testMain = new Test();
		testMain.run();
	}

	public void run() {
		AdjustNum adjustNum = new AdjustNum();
		adjustNum.adjustRun();
		if (adjustNum.getDivNum() == -1 || adjustNum.getFacNum() == -1) {
			System.out.println("         ");
			return;
		}
		DealNum dealNum = new DealNum(adjustNum.getFacNum(),
				adjustNum.getDivNum());
		dealNum.dealRun();
	}
}

/**
 *      
 */
class AdjustNum {
	String facNum;
	String divNum;

	public void adjustRun() {
		facNum = getInputFacNum();
		divNum = getInputDivNum();
	}

	public int getFacNum() {
		//       32  
		return (strToData(facNum) <= 32 ? strToData(facNum) : -1);
	}

	public int getDivNum() {
		if (strToData(divNum) == 0) {
			System.out.println("        0");
			return -1;
		} else {
			//       32  
			return (strToData(divNum) <= 32 ? strToData(divNum) : -1);
		}
	}

	//     
	public String getInputFacNum() {
		return JOptionPane.showInputDialog(null, "       ");
	}

	//     
	public String getInputDivNum() {
		return JOptionPane.showInputDialog(null, "       ");
	}

	//         
	public int strToData(String strData) {
		if (isNumeric(strData)) {
			return Integer.parseInt(strData);
		} else {
			return -1;
		}
	}

	//           
	public boolean isNumeric(String strData) {
		Pattern pattern = Pattern.compile("[0-9]*");
		return pattern.matcher(strData).matches();
	}
}

/**
 *      
 */
class DealNum {
	private int firstNum, secondNum;

	//       ,           
	public DealNum(int firstNum, int secondNum) {
		this.firstNum = firstNum;
		this.secondNum = secondNum;
	}

	public int dealRun() {
		return adjustData(getEndData(firstNum), secondNum);
	}

	//        
	public int getEndData(int myNum) {
		int endData = 1;
		// 0!=1
		if (myNum == 0) {
			return 1;
		}
		while (myNum != 0) {
			endData *= myNum;
			myNum--;
		}
		System.out.println(endData);
		return endData;
	}

	//            
	public int adjustData(int one, int two) {
		int isTrue = 0;
		if (one % two == 0) {
			isTrue = 1;
		} else {
			isTrue = 0;
		}
		return 1;
	}
}