Java BufferedReader到BigInteger变量

Java BufferedReader到BigInteger变量,java,bufferedreader,Java,Bufferedreader,所以我有一个很长的文本文件,使用Scanner加载大约需要半个小时,所以我尝试切换到BufferedReader,这是我现在的代码 public static void main(String[] args) { // TODO Auto-generated method stub BufferedReader Br1 = null; BigInteger num = new BigInteger ("0"); String Line = ""; try

所以我有一个很长的文本文件,使用Scanner加载大约需要半个小时,所以我尝试切换到BufferedReader,这是我现在的代码

public static void main(String[] args) {
    // TODO Auto-generated method stub
    BufferedReader Br1 = null;
    BigInteger num = new BigInteger ("0");
    String Line = "";
    try {
        Br1 = new BufferedReader (new FileReader("text.txt"));
        System.out.println("Read line method");
        Line = Br1.readLine();
        while(Line != null) {
            num = num.add(new BigInteger(Line));
            System.out.println(Line);
            Line = Br1.readLine();
        }

        System.out.println("number " + num);
    } catch (IOException ioe) {System.out.println("error");}

}
为了测试它,我制作了文本文件 2. 1. 0 所有数字都在单独的行中


我希望它给我一个大整数210,但是它给了我3,我试着用不同的方法来增加这个大整数,但是我不能让它正常工作。我应该怎么做?

要获得
210
,首先将所有字符附加到
String
,然后转换为
biginger
,如下所示:

String number;
while(Line != null) {
    //num = num.add(new BigInteger(Line));
    number += Line;
    System.out.println(Line);
    Line = Br1.readLine();
}
num = new BigInteger(number);

顾名思义,
biginger
就像一个
Integer
。在
整数中,
1+2+0
将是
3
,而不是
120
。如果这是您想要的,请使用
StringBuilder
,如

StringBuilder s = new StringBuilder("");
while(Line != null) {
    s.append(Line);
    Line = Br1.readLine();
}
如果您希望将其作为
biginger
,请执行以下操作

BigInteger num = new BigInteger(s.toString());

add
将添加数字,因此您基本上是在计算2+1+0=3。为什么您想要210?您还希望从num.add(new biginger(Line))?嗯,我试过了,shiftLeft,还有一些其他的东西,但都没用。你为什么要首先创建一个这样的大双整数呢。我的猜测是,有一种更好的方式来实现你想要实现的目标。您想要实现什么?但是如果OP想要
BigInteger
,该怎么办?@Kaushal28已经考虑过了。现在这部分代码不起作用了'num=new BigInteger(s);'我该如何改变这一点?@SamanthaClark:应该可以。什么不起作用?@SamanthaClark do
num=new biginger(s.toString())
的构造函数不允许使用
CharSequence
,只允许使用
String
。在这里没有什么区别,但是您应该更喜欢
StringBuilder
而不是
String
,考虑到
字符串
是不可变的,并且增加了程序的开销。谢谢,这就成功了:)@SamanthaClark你是受欢迎的朋友!请考虑@ SHIWWAT注释,您可以使用<代码> StringBuilder < /代码>。如果答案有帮助,您可以接受:)