TextField只接受数字并存储在ArrayList <double>中

时间:2015-08-24 06:23:15

标签: java list

我有一个textField,只接受两位小数的数字,我希望它存储在ArrayList中....我该怎么做?

private JTextField textField;
    textField = new JTextField();
    textField.setBounds(126, 105, 46, 14);
    contentPane.add(textField);
    textField.setColumns(10);

    NumberFormat numberFormat =  NumberFormat.getNumberInstance(Locale.getDefault());
    DecimalFormat decimalFormat = (DecimalFormat) numberFormat;
    decimalFormat.setGroupingUsed(false);
    textField = new JFormattedTextField(decimalFormat);
    textField.setColumns(15); 

     double b = textField.getText(); //Change type of b to string    

      ArrayList<Double> myVector=new ArrayList<Double>(); 

    myVector.add(b);

3 个答案:

答案 0 :(得分:1)

我不确定您是否可以将输入限制为具有固定数量的小数位。但您可以选择验证输入并将其格式化为所需格式。您可以使用正则表达式模式来检查输入的格式。

答案 1 :(得分:0)

您的b是双重类型,而getText不会返回双重类型。

在将其分配给该变量之前,您需要将其更改为双倍。

double b = 0;
try
{
  b = Double.parseDouble(textField.getText().toString());     
}
catch(NumberFormatException e)
{
  System.out.println("Invalid number!");
}
ArrayList<Double> myVector=new ArrayList<Double>(); 
myVector.add(b);

答案 2 :(得分:0)

首先检查TextField中的字符串是否有效,然后执行您需要执行的操作。如果你想要一个特定的数字位数,正则表达式会很好。 此示例检查完全两位小数的数字。

    String someNumber = "1234.12";  // your TextField value goes here

    if (someNumber.matches("\\d+(\\.\\d{2})?")) {
        System.out.println("valid");
        double doubleNumber = Double.parseDouble(someNumber);
        System.out.println(doubleNumber);
        // more code
    } else {
        System.out.println("invalid");
    }