gpt4 book ai didi

java - 处理大量数据时出现运行时错误

转载 作者:行者123 更新时间:2023-11-30 02:43:50 26 4
gpt4 key购买 nike

我正在尝试为涉及函数的问题编写代码,该函数将输入数字作为字符串,并在除以 7 时将输入的余数作为整数返回。

虽然代码适用于较小的数字,但在处理较大的数字作为输入时会提示运行时错误,如下所示..

Runtime error   time: 0.04 memory: 711168 signal:-1

Exception in thread "main" java.lang.NumberFormatException: For input string: "5‌​449495"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.math.BigInteger.<init>(BigInteger.java:470)
at java.math.BigInteger.<init>(BigInteger.java:597)
at Ideone.remainderWith7(Main.java:13)
at Ideone.main(Main.java:22)

我的代码如下..

/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone {
int remainderWith7(String num) {
// Your code here
java.math.BigInteger bg = new java.math.BigInteger(num);
//System.out.println(num);
Integer n = bg.intValue();
return (int) n % 7;
}

public static void main(String[] args) throws java.lang.Exception {
// your code goes here
Ideone id = new Ideone();
System.out.println(id.remainderWith7("56495654565052555054535456545355495650575755555757575350505‌​44949525452505653565‌​54949515453545151525‌​15050575749545453535‌​54954555157565253514‌​94949495155515455545‌​65555575452555157505‌​55557495050564952514‌​95051505752545155495‌​65156515750555450545‌​35549535551525149535‌​25654525554535154515‌​05251575251494956515‌​35255515450515553515‌​15657545054505357535‌​55654575549575349565‌​351575054"));
}
}

最佳答案

你是如何粘贴该字符串的?看起来里面包含了很多zero-width spaceszero-width non-joiners .

我说“看起来像”;实际上,只有在打印出字符串数组的内容(使用 Arrays.toString 并将该长字符串封装在变量中,或者检查它)时,您才能看到这些内容使用调试器。

最终,这就是让你误入歧途的原因; Java 尝试将这些 Unicode 字符转换为数字,由于它们不是数字,因此它们转换为 -1。这就是你的代码崩溃的原因,也是为什么它崩溃的原因不能立即显而易见的原因。该字符串中的字符数量比您立即相信的要多。

修复方法是从字符串中删除这些字符。

String num = ""; // enter your long number here; not repeating it for brevity's sake
num = num.replace("\u200C", "").replace("\u200B", "");

现在您可以回到代码的其他问题,例如当您想要执行取模时不使用 BigInteger.mod (因为相信我,使用 % 不会给你这么大的整数的正确答案)。

关于java - 处理大量数据时出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40825348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com