//SoinsuuBunkaiAWT.java //安澤出海(泉獺) //素因数分解ソフト。整数を入力すると素因数分解してくれる。 //AWTコンポーネントを用い、アプレットにしてみました。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; /* */ //↑これを埋め込んでおくと、上部のコマンドに //appletviewer (ファイル名).javaと入力するだけで実行できる。 public class SoinsuuBunkaiAWT extends Applet{//メインクラス private TextField tf; private Button bt; private Label lb; private String s=""; public void init(){//初期化処理 setLayout(new GridLayout(3,1));//3行×1列のグリッドレイアウト。 lb=new Label("数値を入力してボタンを押してください。");//ラベルの準備 bt=new Button("素因数分解");//ボタンの準備 tf=new TextField("",8);//一行の入力欄を準備 add(tf);//一行の入力欄を配置 add(bt);//ボタンを配置 add(lb);//ラベルを配置 bt.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int a=0; try{ //int型に変換 a=Integer.parseInt(tf.getText() );//入力された文字列を数値に変換 //計算 s=a+"="; if(a<0){//マイナスへの対応 s=s+"-";//マイナスを追加。 a=Math.abs(a);//絶対値に変換 } if(a<=1){//入力値が-1,0,1の場合。 s=s+a;//入力値をそのまま出力 } else{//さもなくば CheckNumber(a);//最小の素因数を割り出す。 } lb.setText(s);//表示 } catch(Exception me){//数値以外の文字を入力した時の対応 lb.setText("数値を正しく入力してください。"); } } }); } //SoinsuuBunkai2.javaのプログラムの一部をコピー&ペーストし、少し改良しました。 private void CheckNumber(int a){//最小の素因数を割り出すメソッド int b=0;//仮に数値を代入しておかないとコンパイルを通らない。 //数値の代入コマンドはfor文・if文の中にあり、 //ここを通過しない可能性があると、 //機械(コンパイラー)が判断するからだ。 for(int i=2;;i++){ if(a%i==0){//余りがゼロなら b=i;//iを返り値にはできない。for文の終了と共にiも消えるから。 break;//for文を抜ける。 } } s=s+b; //System.out.print(b);//素因数を出力 a=a/b;//最小の素因数で割る。 if(a!=1){ s=s+"×"; //System.out.print("×"); CheckNumber(a);//再起呼び出し。同じメソッドをもう一度呼び出す。 } } }