java从JTextField获取值并将其设置为BigInteger

时间:2014-05-17 03:11:35

标签: java biginteger

我在一个包中有两个类:firstClass和secondClass。

我在firstClass中创建了一个文本字段,让我们假设它是txtStringNumber。

我在firstClass中创建了一个方法来获取txtStringNumber值,如下所示:

public String getStrNumber(){
    String strNumber = txtStringNumber.getText();
    return strNumber;
}

我必须将它作为String传递给secondClass并将strNumber作为BigInteger值。

在第二课中,我创建了一个从firstClass获取txtStringNumber值的方法,如tis:

public static String theNumbers(){
     firstClass f = new firstClass();

     return f.getStrNumber();
 }
public static String strAllNumbers = theNumbers();

当我在secondClass中打印strAllNumbers时,它会输出正确的值。然后我添加这个:

public static BigInteger bigAllNumbers = new BigInteger(strAllNumbers);

在我看来,它应该有效。但实际上,它并没有。发生错误。

所以我检查错误,说:

throw new NumberFormatException("Zero length BigInteger");

我猜BigInteger接受strAllNumbers为空。 但就像我已经说过的那样,当我直接打印strAllNumbers而不将其设置为BigInteger时,它会返回正确的值。

这里有什么问题,我该如何解决?

2 个答案:

答案 0 :(得分:2)

您可以创建firstClass对象f,并在任何人有机会在其中输入文本之前从其文本字段中获取字符串。所以毫不奇怪,它是空的。

解决方案:不要这样做!只有在输入有意义的内容后才能获取文本。 我猜你有两个firstClass对象,一个是显示的,另一个是在这个方法中创建的,并且认为对显示的对象的更改将反映在新创建的对象中,但是那个&#39 ;不是编程如何运作。而是将显示对象的有效引用传递给需要它的另一个对象。

答案 1 :(得分:2)

您在firstClass方法(theNumbers)中创建firstClass f = new firstClass();的新实例,文本字段的值不太可能设置为有用的东西(特别是用户)

您需要提供一种firstClass方法,将值从文本字段传递到secondClass,可能是通过某种设置器(这是经典producer-consumer pattern)或设置建立firstClass机制,以便在值发生变化时通知secondClass,然后让secondClass检索该值(这是一个类observer pattern)。

在任何情况下,您都不应该创建这些类的新实例,您需要创建它们然后将这些实例传递给任何一个将作为控制器的实例...