gpt4 book ai didi

java - 尝试将字符串转换为 Long,然后分解每个数字

转载 作者:行者123 更新时间:2023-12-01 17:52:29 25 4
gpt4 key购买 nike

我有一个作业,要求我从输入中请求一个 12 位数字(必须视为字符串)并计算其中的最后一位数字。但是,它在 digits[i] = temp%10; 处返回错误,表示我无法执行此操作。还有其他人有这方面的经验吗?

 import java.util.*;
public class Exercise05_47{

public static void main(String []args){
Scanner sc = new Scanner(System.in);
int[] digits;
int d13 = 0;
System.out.println("Enter the first 12 digits of an ISBN-13 as a string: ");
String ISBN = sc.nextLine();
Long realISBN = Long.parseLong(ISBN);
Long temp = realISBN;
Long ten = 10L;
if(ISBN.length() != 12)
{
System.out.println(ISBN+" is an invalid input");
return;

}
else
{
for(int i=0;i<=12;i++)
{
digits[i] = temp%10 ;
temp /=10;
}
d13 = 10-(digits[0]+3*digits[1]+digits[2]+3*digits[3]+digits[4]+3*digits[5]+digits[6]+3*digits[7]+digits[8]+3*digits[9]+digits[10]+3*digits[11])%10;
if(d13 ==10)
{
d13=0;
}

}
System.out.println("The ISBN-13 number is "+ISBN+d13);
}
}

最佳答案

您无法将 Long(或 long)存储到 int[] 中,因为长整数比常规整数使用更多字节整数。这尤其意味着并非所有 long 值都可以表示为 int。解决问题的一种方法是使用 long[] 代替。

从技术上讲,您也可以将 ISBN 解析为 int,但通常 id 总是长整型以支持大量值,某些 ISBN 实际上不适合 int >,因此我的答案(请参阅此 wiki page ,它告诉您 ISBN 最多可以有 13 个数字,这超过了 int 大约 20 亿的最大容量)。

您可以在 this page 上找到有关不同基元类型的大小和值范围的一些信息。或this one了解更多详情。

但是,正如 Ilya Bursov 指出的那样,您的数组只包含数字,因此少于 10 个。您可以在 short 中放入任何数字int,因此在这种情况下,可以安全地将 long 值转换为较小的原始类型,即 (int) (temp % 10)

关于java - 尝试将字符串转换为 Long,然后分解每个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48470904/

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