BufferedReader 到 BigInteger 变量
BufferedReader to BigInteger variable
所以我有一个很长的文本文件,使用 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
所有数字都在不同的行上
我希望它给我一个 BigInteger 210,但它却给了我 3,我试着用不同的方式来添加到 BigInteger,但我无法让它正常工作。我应该怎么做?
要得到210
,首先将所有字符附加到String
,然后转换为BigInteger
,如下:
String number;
while(Line != null) {
//num = num.add(new BigInteger(Line));
number += Line;
System.out.println(Line);
Line = Br1.readLine();
}
num = new BigInteger(number);
BigInteger
,顾名思义,就像一个Integer
。在 Integers
中,1+2+0
将是 3
,而不是 120
。如果那是你想要的,请使用 StringBuilder
,例如
StringBuilder s = new StringBuilder("");
while(Line != null) {
s.append(Line);
Line = Br1.readLine();
}
如果您希望将其作为 BigInteger
,请执行
BigInteger num = new BigInteger(s.toString());
所以我有一个很长的文本文件,使用 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 所有数字都在不同的行上
我希望它给我一个 BigInteger 210,但它却给了我 3,我试着用不同的方式来添加到 BigInteger,但我无法让它正常工作。我应该怎么做?
要得到210
,首先将所有字符附加到String
,然后转换为BigInteger
,如下:
String number;
while(Line != null) {
//num = num.add(new BigInteger(Line));
number += Line;
System.out.println(Line);
Line = Br1.readLine();
}
num = new BigInteger(number);
BigInteger
,顾名思义,就像一个Integer
。在 Integers
中,1+2+0
将是 3
,而不是 120
。如果那是你想要的,请使用 StringBuilder
,例如
StringBuilder s = new StringBuilder("");
while(Line != null) {
s.append(Line);
Line = Br1.readLine();
}
如果您希望将其作为 BigInteger
,请执行
BigInteger num = new BigInteger(s.toString());