2016-05-02 32 views
0

私は指定された番号が最後の数字から最後の数字まで同じ数字のcapicua(131,12121,13431)であるかどうかを判断するJavaプログラムを作成する必要があります。しかし、それは私に23行目(while(i> = 0).....)のエラーを与えます。質問はどのようにして配列を呼び出すことができるかです。 plsは本当に悲しい私に役立ちます:c。ここでは、コードは次のようになります。スレッドの例外java.lang.arrayindexoutofboundsexception 1

public class Capi { 
    /** 
    * 
    **/ 
    public static int num(int a) { // counting digits from the number 
    int n = 0; 
    while(a>=10) { a = a/10; 
      n = n+1; 
      } 
    return n; 
    } 
    public static boolean det(int a, int n) { 
    int z = a; 
    double y =0; 
    n = n-1; 
    int i = 0; 
    int x[] = new int[n]; 
    for(i=0; i<x.length; i++) { // saving the digits into x[i] 
     x[i] = a%10; 
     a = a/10; 
     } 
    while(i>=0) { y = x[i]*Math.pow(10,n-1); // calling the digits x[i],x[i-1] untill it gets 0 
     i = i - 1; 
     n = n -1; 
      } 
    double num1= y + a*Math.pow(10,n); 
    if(num1 == z) { return true; } 
    else { return false; } 
    } 
} 
+1

コードをダンプいけないしてください。書式を設定して質問を投稿してください。 – randominstanceOfLivingThing

+0

ちょっとマイク。どのラインが例外を投げていますか?このコードで何を達成しようとしていますか?あなたの目標は不明で、コードが何をすべきかを知ることは、問題の診断に役立ちます。 –

+0

{code}スニペットを使用してコードを追加してください。他の人がすぐに手助けするのが簡単です。 – MSameer

答えて

0

私は問題はあなたがwhile(i>=0)を試みる前に、iの値は、x.lengthに設定されていることであると感じています。したがって、ループを実行する前にi--を追加しました。

次のトリックがあるかどうかを確認してください。

public class Capi { 

public static int num(int a) { // counting digits from the number 
    int n = 0; 
    while(a>=10) { 
     a = a/10; 
     n = n+1; 
    } 
    return n; 
} 

public static boolean det(int a, int n) { 
    int z = a; 
    double y = 0; 
    n = n-1; 
    int i = 0; 
    int x[] = new int[n]; 

    for(i=0; i<x.length; i++) { // saving the digits into x[i] 
     x[i] = a%10; 
     a = a/10; 
    } 

    //i is now set to x.length, thus decrement it as index runs from 0 to x.length-1 
    i=i-1; 

    while(i>=0) { 
     y = x[i]*Math.pow(10,n-1); // calling the digits x[i],x[i-1] untill it gets 0 
     i = i - 1; 
     n = n -1; 
    } 

    double num1= y + a*Math.pow(10,n); 
    if(num1 == z) { 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

}

+0

こんにちは、それは0から Mike

+0

@Mike、The forループ終了時のiの値は 'x.length or n'です。 javaの配列は0からarray.length -1のインデックスが付けられます。そのため、 'x [0]〜x [x.length-1]'しか実行できませんが、 'i = x.length'の場合は、外に出た例外のインデックスを投げます。これをhttp://ideone.com/qWmPMWで確認してください。これが助けてほしいと願っています! – MSameer

+0

何が.... OMG!あなたがここにいるならば、私はあなたにキスをしたい、ありがとう、ありがとう、ありがとう、ありがとう、ありがとう、Math.pow srry im rlly noobプログラミング。あなたが正しい。! – Mike

関連する問題