2016-09-14 107 views
0

我正在做的谷歌代碼堵塞的問題之一,我在這一點卡住了。代碼編譯正確,但輸入'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