首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Karatsuba算法

Karatsuba算法
EN

Stack Overflow用户
提问于 2017-07-03 01:17:35
回答 1查看 532关注 0票数 1

当我运行我的程序时,我不断地收到这些错误,有人能发现错误吗?我没有使用递归的经验,我可能把基本情况搞砸了。我的测试由两个长度相同的数字组成,我的目标是在不使用内置类的情况下将两个大数相乘。方法add只接受两个字符串,它们是数字,并将它们相加,我检查了,不管数字有多大,它都能工作。

错误NumberFormatException:用于输入字符串:"“Integer.parseInt(Integer.java:592)

代码语言:javascript
复制
public static String mu (String value1, String value2){

    int length1 = value1.length();
    int length2 = value2.length();

    //If one value has more digits than the other, add zeroes to the front...



    int temp1;
    int temp2;
    int multiply;

    if (length1==1 || length2 ==1){
        temp1 = Integer.parseInt(value1);
        temp2 = Integer.parseInt(value2);
        multiply = temp1*temp2;
        return multiply +"" ;
    }else if (length1 ==0 || length2 ==0){
        return "";
    }



        int firstHalf = length1/2;
        int secondHalf = length1 - firstHalf;

        String value1First = value1.substring(0, firstHalf);
        String value1Second = value1.substring(firstHalf, secondHalf);


        String value2First = value2.substring(0, firstHalf);
        String value2Second = value2.substring(firstHalf, secondHalf);

        String ac = mu (value1First, value2First);
        String ad = mu (value1First, value2Second);
        String bc = mu(value1Second, value2First);
        String bd = mu(value1Second, value2Second);

        String zeroesToAdd= null;
        String zeroesToAdd2 = null;
        for (int i=0; i<length1; i++){
            zeroesToAdd = "0"+ zeroesToAdd;
        }
        for (int i=0; i<length1/2; i++){
            zeroesToAdd2 = "0"+ zeroesToAdd2;
        }

        String firstPart = ac + zeroesToAdd;
        String secondPart = (add(ad,bc))+zeroesToAdd2;
        String thirdPart = bd;

        String add1 = add(firstPart, secondPart);
        String add2;




        return add(add1, thirdPart);
    }
EN

回答 1

Stack Overflow用户

发布于 2017-07-03 05:25:31

错误NumberFormatException:用于输入字符串:"“Integer.parseInt(Integer.java:592)

是由代码引起的。

代码语言:javascript
复制
Integer.parseInt(value1)  or
Integer.parseInt(value2)

您可能需要尝试添加更多的情况来组合str长度(1,1) (1,0) (0,1) (0,0)。下面的代码可能会有帮助!

代码语言:javascript
复制
if (length1==1 && length2 ==1){
    temp1 = Integer.parseInt(value1);
    temp2 = Integer.parseInt(value2);
    multiply = temp1*temp2;
    return multiply +"" ;
}else if (length1 ==0 && length2 ==0){
    return "";
}
else if (length1 ==0 && length2 ==1){
    return value2;
}
else if (length1 ==1 && length2 ==0){
    return value1;
}

希望能帮上忙!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44876587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档