2016-03-23 36 views
0

Java ve stackoverflow için çok yeniyim, bu yüzden cahil görünüyorsam özür dilerim ama bu programı Rus Köylü çoğaltma algoritması kullanarak iki sayıyı bir araya getirmek için yazdım. Tüm program çok daha fazla işlem içeriyor ve yüzlerce satır kod içeriyor, ancak sadece bu özel yöntem için gerekli olduğunu düşündüğüm şeyi dahil ettim. Bir test kayışım var, bu yüzden tüm alt ölçümlerin doğru çalıştığını biliyorum. Bununla birlikte uğraştığım problem, ürüne faktör1 eklediğim 3. sıra. Değerler doğru bir şekilde eklenir, ancak faktör1, 5. satırda 2 ile çarpıldığında, 3. hatta ürüne eklenen değer de iki katına çıkar ve yanlış bir ürün değeri elde edilir. Faktör 1'in iki katına çıktığında, ürünün süresine geri gitmediğinden nasıl emin olabilirim? Eğer bu yüzden katma değer doesnt değiştirmek yerine bu

return new FactorClass(datamember*2);
yapıyor deneyin daha koduJava'da otomatik olarak değer değiştirmeyi nasıl önlerim

`datamember=datamember*2;` 

kullanmak multiplyByTwo

while (Long.parseLong(factor2.toString()) >= 1) { 
    if (factor2.bigIntArray[0] % 2 == 1) { 
     product = product.add(factor1); 
    } 
     factor1 = factor1.multiplyByTwo(); 
     factor2 = factor2.divideByTwo(); 

} 
+0

* 1. faktörün, ürün terimine geriye doğru gitmediğinin iki katına çıkarıldığında nasıl emin olabilirim? * - 'factor1.multiplyByTwo();' – TheLostMind

+0

sonucunu atayarak farklı bir yerel değişken kullanın. factor2', factor' ve 'product' veri türleri? – nbrooks

cevap

0

Ben senin yönteminde düşünüyorum.

mulTiplyByTwo yöntem kodunu gösterebiliyor olsaydınız daha iyi olurdu, çünkü bu aslında değerinizi aldığınız yerdir.

İlgili konular