余談: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桁の数字はキチンと翻訳できるようだ。思ったよりも面倒だったが。