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);
        }
    }
}它不会产生最好的结果.但它运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 
