2016-09-14 7 views
0

私はGoogleコードのジャムの質問の1つをしていた、私はこの時点で立ち往生した。コードは正しくコンパイルされますが、 'N'の入力後はさらに進まなくなります。論理的なエラーのように見えますが、コードを実行するとうまくいくように見えます。ここで何が問題になるのでしょうか?質問はこちらhttps://code.google.com/codejam/contest/6254486/dashboardコードスニペットの論理エラー?

public class Counting_Sheep 
{ 
static int haha,digit,j; 
static int arr[]=new int[11]; 
public static void main(String args[])throws IOException{ 
    BufferedReader obj=new BufferedReader(new InputStreamReader(System.in)); 
    Scanner in= new Scanner(System.in); 
    System.out.println("Number of test cases"); 
    int t=in.nextInt(); 
    System.out.println("Enter N by Bleatrix"); 
    int n=Integer.parseInt(obj.readLine()); 
    if(n==0){ 
     System.out.println("INSOMNIA"); 
     System.exit(0); 
    } 
    for(int i=1;i<=n+1;i++){ 
     haha=i*n; 
     numbercalculator(haha); 
    } 
    for(int i=0;i<11;i++) 
    System.out.println(arr[i]); 
} 
static void numbercalculator(int a){ 
    while(a>0){ 
     digit=a%10; 
     if(digitIsUnique(digit)){ 
     arr[j]=digit; 
     j++; 
    } 
    } 
} 
static boolean digitIsUnique(int b){ 
    for(int i=0;i<11;i++){ 
     if(b==arr[i]) 
     return false; 
     else 
     return true; 
    } 
    return false; 
} 
} 
+0

デバッガで実行しようとしましたか? – RealSkeptic

答えて

1

これは無限ループではありませんか?

while(a>0){ 
    digit=a%10; 
    if(digitIsUnique(digit)){ 
     arr[j]=digit; 
     j++; 
    } 
} 
+0

Yeaup。問題が見つかりました。これだけです。桁> 0の間に行う必要があり、剰余を見つけた後に桁を10で割ります – AxeManTOBO