• ベストアンサー

負の数を取得するには?

JTextfieldでDouble型の負の数を取得するにはどうすればよいのでしょうか? とっても困ってます。 回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

うーーん。 double numx=Double.parseDouble(transXget.getText().toString()); で大丈夫だと思うのですが、どんな感じでいけないのでしょうか? 一つ加えておきますと、JTextfieldは1文字変化させるごとに「insertUpdate(DocumentEvent e)」を呼び出すようです。つまり、「-」と書いた瞬間にこのメソッドが呼び出されるので、 double numx=Double.parseDouble("-"); を実行しようとします。"-"は当然数字ではないのでNumberFormatExceptionが発生しますね。"3"と先に書いた後で"3"の前に"-"を書くと"-3"と認識するので"-3.0"と出力されます。 最初に"-"を書きたいときにはtry-catchすればよいでしょう。以下に参考プログラムを載せます。 import javax.swing.*; import javax.swing.event.*; class TransXListener extends JFrame implements DocumentListener{ JTextField transXget; static public void main(String args[]) { TransXListener txl=new TransXListener(); } TransXListener() { transXget= new JTextField(); transXget.getDocument().addDocumentListener(this); this.getContentPane().add(transXget); pack(); setVisible(true); } public void insertUpdate(DocumentEvent e) { try { double numx=Double.parseDouble(transXget.getText().toString()); System.out.println(numx); } catch(NumberFormatException nfe) { } } public void removeUpdate(DocumentEvent e) { } public void changedUpdate(DocumentEvent e) { } } 私の環境下ではこれでOKでしたが、いかがですか?

ebinamori
質問者

お礼

回答ありがとうございます。 ばっちりうまくいきました。 エラー処理をきちんとすればよかったんですね。 勉強になりました。

その他の回答 (1)

回答No.1

JTextfieldでDouble型の正の数まではどうやって取得しているのですか?

ebinamori
質問者

お礼

class transXListener implements DocumentListener{ public void changedUpdate(DocumentEvent de){ } public void insertUpdate(DocumentEvent de){ transflag=true; if(!coeflag){ if(!transXget.getText().toString().equals("-")){ double numa=Double.parseDouble(transAget.getText().toString()); double numx=Double.parseDouble(transXget.getText().toString()); double numy=Double.parseDouble(transYget.getText().toString()); coe1=-numa*2*numx; coe0=(numa*(numx*numx))+numy; coe1get.setText(Double.toString(coe1)); coe0get.setText(Double.toString(coe0)); } } transflag=false; } public void removeUpdate(DocumentEvent de){ } }

ebinamori
質問者

補足

double numx=Double.parseDouble(transXget.getText().toString()); という感じです。transXgetがJTextfieldです。 よろしくお願いします。

関連するQ&A