加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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);
        }
    }
}

它不会产生最好的结果.但它运行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读