1

これは、テキストボックスからテキストを取得し、それらを解析して double データ型にし、その製品を出力するために作成したコードです。したがって、文字列を解析して例外を処理して double にするための代替手段はありますか..?

...........
    public void actionPerformed(ActionEvent ae){
        try{
            if(ae.getSource()==b1 || ae.getSource()==t2){
                String s1=t1.getText();
                String s2=t2.getText();
                double x=Double.parseDouble(s1);
                double y=Double.parseDouble(s2);
                double z=x*y;
                t3.setText(""+z);
            }
            if(ae.getSource()==b2){
                t1.setText(null);
                t2.setText(null);
                t3.setText(null);
                t1.requestFocus(true);
            }
        }catch(NumberFormatException nfe){
            JOptionPane.showMessageDialog(this,"Please Enter Proper Number in the TextFields");
        }
    }
...............
4

4 に答える 4

0

あなたのケースでそのような例外を処理する方法を知っているのはあなたです。例外を処理する他の方法はありません。あなたのコードは正しく、それはほとんどのプログラマーが行ったことです。使用できますJFormattedTextFieldが、例外も処理しません。

于 2013-06-03T07:19:21.677 に答える
0

私見いいえ、

ドキュメントが表示された場合

public static double parseDouble(String s) は NumberFormatException をスローします

ショートカットがある場合でも、上記の方法が使用され、明らかに同じ例外がスローされます。

于 2013-06-03T07:19:37.777 に答える
0

文字列を解析して数値 (またはあなたの場合は double) を取得する際の例外処理を回避するには、以下に示すように、 ParsePositionと組み合わせてNumberFormatを使用できます。

import java.text.NumberFormat;
import java.text.ParsePosition;

public class TestClass
{

   public static void main(String[] args)
   {     
      System.out.println("Parse test 10.00 ---> " + parseNumber("10.00"));
      System.out.println("Parse test \"\" ---> " + parseNumber(""));
      System.out.println("Parse test 10 ---> " + parseNumber("10"));
      System.out.println("Parse test shgdfhsaghdga ---> " + parseNumber("shgdfhsaghdga"));
   }

   private static boolean parseNumber(String input)
   {
      NumberFormat fmt = NumberFormat.getInstance();
      ParsePosition pos = new ParsePosition(0);
      fmt.parse(input, pos);
      return input.length() != 0 && (input.length() == pos.getIndex());      
   }

}

出力

Parse test 10.00 ---> true
Parse test "" ---> false
Parse test 10 ---> true
Parse test shgdfhsaghdga ---> false

数値が有効な文字列の場合、ParsePosition オブジェクトのインデックスは文字列の末尾に到達します。そうしないと、最初の無効な位置で終了します。最後の return ステートメントは、この条件をチェックします。メソッドを使用してparseNumber()、文字列を double に解析する前に事前検証できます。

于 2013-06-03T07:42:03.330 に答える
0
String s1 = t1.getText();
    try {
        double x = Double.parseDouble(s1);
    } catch (NumberFormatException  ex) {
        JOptionPane.showMessageDialog(this,"Please Enter Proper Number in the t1 TextField");
        return;
    }
    String s2 = t2.getText();

    try {
        double y = Double.parseDouble(s2);
    } catch (NumberFormatException  ex) {
        JOptionPane.showMessageDialog(this,"Please Enter Proper Number in the t2 TextField");
        return;
    }
于 2013-06-03T07:25:57.773 に答える