Ben çalışmıyor bu kod parçası var:
BigInteger sum = BigInteger.valueOf(0);
for(int i = 2; i < 5000; i++) {
if (isPrim(i)) {
sum.add(BigInteger.valueOf(i));
}
}
Toplam değişken her zaman 0'dır. Neyi yanlış yapıyorum?
Ben çalışmıyor bu kod parçası var:
BigInteger sum = BigInteger.valueOf(0);
for(int i = 2; i < 5000; i++) {
if (isPrim(i)) {
sum.add(BigInteger.valueOf(i));
}
}
Toplam değişken her zaman 0'dır. Neyi yanlış yapıyorum?
Yanıtlar:
BigIntegerdeğişmez. Javadocs, add () "[r] 'nin değeri (bu + val) olan bir BigInteger verdiğini belirtir. Bu nedenle, değiştiremezsiniz sum, addyöntemin sonucunu sumdeğişkene yeniden atamanız gerekir .
sum = sum.add(BigInteger.valueOf(i));
BigInteger değişmez bir sınıftır. Bu nedenle, herhangi bir aritmetik işlem yaptığınızda, çıktıyı bir değişkene yeniden atamanız gerekir.
Evet bu değişmez
sum.add(BigInteger.valueOf(i));
BigInteger sınıfının add () yöntemi kendi değerine yeni BigIntger değeri eklemez, ancak geçerli BigInteger'i değiştirmeden yeni bir BigInteger başvurusu oluşturur ve döndürür ve bu, Dizeler durumunda bile yapılır
Aslında kullanabilirsiniz,
BigInteger sum= new BigInteger("12345");
BigInteger sınıfı için nesne oluşturmak için.Ancak burada sorun, çift tırnak içine bir değişken veremezsiniz. Bu yüzden valueOf () yöntemini kullanmamız gerekir ve cevabı tekrar bu toplamda saklamamız gerekir.
sum= sum.add(BigInteger.valueOf(i));
Bigintegerdeğişmez bir sınıftır. Çıktınızın değerini şu şekilde toplamak için açıkça atamanız gerekir:
sum = sum.add(BigInteger.valueof(i));
Bazı int değerlerini bir araya getirdiğiniz için BigInteger kullanmaya gerek yoktur. longbunun için yeterlidir. int32 bit, long64 bit ise tüm int değerlerinin toplamını içerebilir.
int, bu nedenleBigIntegerbu örneğe ihtiyacınız yoktur .