java使用BigInteger和While
发布时间:2020-12-15 02:22:20 所属栏目:Java 来源:网络整理
导读:我有个问题 import java.math.BigInteger;import java.io.*;import java.util.*;import java.lang.*;public class medici { public static void main(String[] arg) {{ BigInteger zac = new BigInteger("3"); zac = zac.pow(399); BigInteger kon = new Big
我有个问题
import java.math.BigInteger; import java.io.*; import java.util.*; import java.lang.*; public class medici { public static void main(String[] arg) { { BigInteger zac = new BigInteger("3"); zac = zac.pow(399); BigInteger kon = new BigInteger("3"); kon = kon.pow(400); BigInteger nul = new BigInteger("0"); BigInteger jed = new BigInteger("1"); BigInteger detel = new BigInteger("3"); for (BigInteger a = zac; a.compareTo( kon ) <= 0; a = a.add(jed)) { cis = a ; // THIS A PROBLEM String retez = ""; while ( cis > 0 ); // THIS IS A PROBLEM retez = ( cis.mod(detel) ) + retez; cis = cis.divide(detel); System.out.println(retez); } } } } 我试过这个公式BigInteger cis = new BigInteger(“a”);这个cis = a; 而while(cis.compareTo(nul)> 0);为此(cis> 0); 但它不起作用,我不知道为什么. 当我使用这个公式时,这是相同的,但是当我对Big Integer使用相同的时候我只使用整数它不起作用 import java.io.*; import java.util.*; import java.lang.*; public class netik { public static void main(String[] arg) { { int a ; int cis; int detel = 3; for ( a = 567880; a <= 567890; a++ ){ cis = a; String retez = ""; while (cis > 0) { retez = (cis % detel) + retez; cis /= detel; } System.out.println(retez); } } } } 解决方法
要声明cis并将其存储到cis中,请参阅以下内容:
BigInteger cis = new BigInteger(""+a); 假设此代码是导致问题的主要原因,并假设cis是BigInteger: while (cis > 0) { retez = (cis % detel) + retez; cis /= detel; } 这应该是:(这假设一切都是BigInteger. while (cis.compareTo(new BigInteger("0")) > 0) { retez = (cis.mod(detel)).add(retez); cis = cis.divide(detel); } 以下代码为我运行: public static void main(String[] arg) { BigInteger zac = new BigInteger("3"); zac = zac.pow(399); BigInteger kon = new BigInteger("3"); kon = kon.pow(400); BigInteger nul = new BigInteger("0"); BigInteger jed = new BigInteger("1"); BigInteger detel = new BigInteger("3"); for (BigInteger a = zac; a.compareTo(kon) <= 0; a = a.add(jed)) { BigInteger cis = a; // THIS A PROBLEM String retez = ""; while (cis.compareTo(new BigInteger("0")) >= 0) { retez = (cis.mod(detel)) + retez; cis = cis.divide(detel); System.out.println(retez); } } } 它不会产生最好的结果.但它运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |