你用一个随机数写,代码应该算出你输入了多少个唯一数字。例5545会给出2作为答案。这最多可达10位数,如果我输入更多数字,我会收到错误信息。为什么?
import java.util.Random;
import se.lth.cs.window.SimpleWindow;
import se.lth.cs.p.ovn.turtle.Turtle;
import java.util.Scanner;
public class p5 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int apa=0;
System.out.println("ange tal");
int tal = scan.nextInt();
boolean hej [] = new boolean[10];
if(tal==0){
hej[0]=true;
System.out.println("awejawejwaejae");
}
while(tal>0){
int z = tal%10;
hej[z]=true;
tal=tal/10;
}
for(int k=0; k<10; k++)
if(hej[k]==true){
apa++;
}
System.out.println(apa);
for(int k=0; k<10; k++){
System.out.println(hej[k]);
}
}
}
答案 0 :(得分:0)
Java int
类型是一个32位有符号整数,即它保存从-2^31
到2^31 - 1
的值。
最大值2^31 - 1
为~2.14 * 10^10
,即有10位数。如果您的号码大于此值,则会变为负数,这将导致ArrayIndexOutOfBoundsException
tal%10
为负值。
您可以使用long
代替int
(最大值为~9.2 * 10^18
),或将BigDecimal用于任意大数字,或者将数字作为字符串操作(即根本不解析它)来规避这个问题。