生物屋さんのためのゼロからのプログラミング

―忘れないための覚書 (たま~に更新)―

余談:Javaで入力した数値(3桁まで)を英語表記に変える

色々な復習ついでに、ちょっと目についた問題をやってみた。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class NumbetTrans extends JFrame implements ActionListener {

	JTextField numEntry;
	JLabel label;

	public String print1 (int a) {
		String no = "";
		switch (a) {
			case 0: break;
			case 1: no = "one"; break;
			case 2: no = "two"; break;
			case 3: no = "three"; break;
			case 4: no = "four"; break;
			case 5: no = "five"; break;
			case 6: no = "six"; break;
			case 7: no = "seven"; break;
			case 8: no = "eight"; break;
			case 9: no = "nine"; break;
		}
		return no;
	}

	//2桁の取り扱い
	public String print2 (int a) {
		String no = "";
		switch (a/10) {
			case 0: break;
			case 2: no = "twenty"; break;
			case 3: no = "thirty"; break;
			case 4: no = "forty"; break;
			case 5: no = "fifty"; break;
			case 6: no = "sixty"; break;
			case 7: no = "seventy"; break;
			case 8: no = "eighty"; break;
			case 9: no = "ninety"; break;
		}
		return no;
	}

	//Teenの取り扱い
	public String printTeen (int a) {
		String no = "";
		switch (a%10) {
		case 1: no = "eleven"; break;
		case 2: no = "twelve"; break;
		case 3: no = "thirteen"; break;
		case 4: no = "fourteen"; break;
		case 5: no = "fifteen"; break;
		case 6: no = "sixteen"; break;
		case 7: no = "seventeen"; break;
		case 8: no = "eighteen"; break;
		case 9: no = "nineteen"; break;
		}
		return no;
	}

	public void transLate() {
		String str = numEntry.getText();
		int num = Integer.parseInt(str);

		if (num / 10 == 0) {
			label.setText (print1(num));
		} else if (num / 10 == 1) {
			label.setText (printTeen(num));
		} else if (num / 10 > 1 && num/10 <= 9) {
			label.setText(print2(num) + " "+ print1(num%10) );
		} else if (num / 10 >= 10 && num/10 <= 90) {
			label.setText(print1(num / 100) + " hundred and "+ print2(num%100) + " " + print1(num%10) );
		}
	}

	public void actionPerformed (ActionEvent e) {
		String cmd = e.getActionCommand();

		if (cmd.equals("trans")) {
			transLate();
		}
	}

	NumbetTrans () {
		JButton button = new JButton ("Translate");
		numEntry = new JTextField();
		label = new JLabel("---");
		button.addActionListener(this);
		button.setActionCommand("trans");
		button.setBounds(40, 50, 100, 30);
		numEntry.setBounds(40, 10, 100, 30);
		label.setBounds(20, 100, 150, 30);
		JPanel pane = new JPanel ();
		pane.setLayout(null);
		pane.add(button);
		pane.add(numEntry);
		pane.add(label);
		getContentPane().add(pane);
	}

	public static void main(String[] args) {
		NumbetTrans frame = new NumbetTrans ();
		frame.setBounds (100, 100, 200, 200);
		frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}

とりあえず、3桁の数字はキチンと翻訳できるようだ。思ったよりも面倒だったが。