2013-10-12 55 views
1

您用隨機數字編寫代碼應該算出您輸入的唯一數字。例子5545將給出2作爲答案。如果我輸入更多數字,最多可以使用10位數字,我會收到錯誤消息。爲什麼?當輸入多於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

Java的int類型是一個32位有符號整數,即,它保持值從-2^312^31 - 1。 最大值2^31 - 1~2.14 * 10^10,即具有10位數字。如果您的號碼大於此值,它將變爲負值,這將導致ArrayIndexOutOfBoundsException,因爲tal%10將爲負數。

您可以使用long而不是int(其中有~9.2 * 10^18最大值),或使用BigDecimal達到任意大的數字,或者作爲一個字符串的操作數(即不解析它在所有)至繞過這個問題。

相關問題