[英]How can I convert a long function into a Biginteger into a string?
我正在嘗試將我的long
變量更改為BigInteger
,因為我將斐波那契數列的數字存儲在其中,然后最終將它們變成一個字符串。 這是我的原始代碼。
public class Fib {
public static void main(String args[])
{
long n1=0,n2=1,n3,i,count = 100;
System.out.print(n1+" "+n2);//printing 0 and 1
for(i=2;i<count;++i)//loop starts from 2 because 0 and 1 are already printed
{
n3=n1+n2;
System.out.print(" "+n3);
n1=n2;
n2=n3;
}
}} :
並且我嘗試將其轉換為 BigInteger 和之后的字符串,就像這樣......
public class Fib {
public static void main(String args[])
{
long n1=0,n2=1,n3,i,count = 100;
BigInteger n1,n2,n3,i,count = BigInteger.valueOf(n1,n2,n3,i,count)
System.out.print(n1+" "+n2);//printing 0 and 1
for(i=2;i<count;++i)//loop starts from 2 because 0 and 1 are already printed
{
String n3= n1+n2;
System.out.print(" "+n3);
n1=n2;
n2=n3;
}
}}
但是,會發生錯誤。 我試圖閱讀將長變量轉換為 BigIntegers 和 BigIntegers 為字符串的語法,我知道我所做的是錯誤的。
但是,我似乎無法找出正確的方法來實現我想做的事情,這就是我來 StackOverflow 尋求幫助的原因。
如果有人可以幫助我,將不勝感激。
java 規范嚴格定義了哪些運算符可以應用於什么以及它的含義。 具體來說,所有常用的數學運算符( +
, -
等)都只適用於原始數字,一個例外是+
它也可以出現在字符串和其他任何東西之間,但這是完全不同的事情(字符串連接而不是數字加法)。
它們根本不能應用於 BigInteger - 規范根本沒有列出這意味着什么,並且 java 沒有運算符重載。
直接替換是混淆地命名為add
、 subtract
、 multiply
、 divide
的方法。 所以,
BigInteger a = BigInteger.ONE;
BigInteger b = BigInteger.ONE;
BigInteger c = a + b; // wrong
BigInteger c = a.add(b); // correct
更好的名稱應該是plus
、 minus
、 times
和dividedBy
。 從某種意義上說,如果我在黑板上寫a = b + c
並請你大聲讀出來,你會說:“a 等於 b 加 c”。 不是“a 等於 b 加 c”。 但是,它就是這樣 - 請記住, a.add(b)
將計算 a 和 b 的總和並返回一個全新的BigInteger
和結果。 它不會將b
添加到a
。 (BigInteger 是不可變的;不可能通過調用其上的方法或任何其他hackery 之外的方式來更改其值)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.