Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 切换到BigInteger,progam不再运行_Java_Biginteger - Fatal编程技术网

Java 切换到BigInteger,progam不再运行

Java 切换到BigInteger,progam不再运行,java,biginteger,Java,Biginteger,所以,对了,我正在创建一个程序,根据这个项目生成回文数字。我的程序适用于较小的数字,但integer只能计算少量的数字,因此我将必需的整数改为BigInteger()。做了这件事之后,我遇到了一些我不太确定的问题。有人对如何使这项工作起作用有什么建议吗 public class Main { public static final boolean DEBUG = false; public static void main(String[] args) { Scanner

所以,对了,我正在创建一个程序,根据这个项目生成回文数字。我的程序适用于较小的数字,但integer只能计算少量的数字,因此我将必需的整数改为BigInteger()。做了这件事之后,我遇到了一些我不太确定的问题。有人对如何使这项工作起作用有什么建议吗

public class Main {
public static final boolean DEBUG = false;

public static void main(String[] args) {       
    Scanner input = new Scanner(System.in);

    //gets the number from the console
    int number = input.nextInt();
    if(DEBUG) System.out.println("Got your number!");
    if(DEBUG) System.out.println("Bout to makePalendrome!");

    makePalendrome(number);   
}


public static boolean isPalendrome(BigInteger number){
    String numberString = number.toString();

    for(int i = 0; i < numberString.length(); i++){
        if(numberString.charAt(i) != numberString.charAt(numberString.length() - 1 - i)) return false;   
    }       
    return true;
}


public static void makePalendrome(int input){
    int steps = 0;
    BigInteger number = new BigInteger((input + "")); 
    if(isPalendrome(number)) printResult(input, steps, number);

    while(!isPalendrome(number)){
        String numberString = number.toString();
        String reversed = "";
        for(int i = 0; i < numberString.length(); i++){
            reversed += numberString.charAt(numberString.length() - 1 - i);
        }
        BigInteger numReversed = new BigInteger(reversed);
        number.add(numReversed);
        steps++;
    }

    printResult(input, steps, number);
}

public static void printResult(int number, int steps, BigInteger palendrome){
        System.out.printf("The number %d becomes palendromic after %d steps, and becomes the number: %d%n", number, steps, palendrome);
        System.exit(0);
    }

}
公共类主{
公共静态最终布尔调试=false;
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
//从控制台获取数字
int number=input.nextInt();
if(DEBUG)System.out.println(“得到你的号码!”);
if(DEBUG)System.out.println(“bouttomakepalendrome!”);
makePalendrome(数字);
}
公共静态布尔值isPalendrome(BigInteger数字){
字符串numberString=number.toString();
对于(int i=0;i
您的代码进入无限循环
而(!isPalendrome(number))
是因为

  number.add(numReversed);
这不会更改
number
的值。你需要重新分配它


number=number.add(numReversed)

这是极少数最好使用字符串的情况之一。确切的问题是什么?“在这样做之后,我遇到了一些我不确定的问题”-什么问题?还要尽量避免
系统。退出
,这会使代码难以理解。如果需要,抛出异常。