2016-05-29 6 views
0

整数の中の桁数を均等に整数に分割して出力しようとしています。Javaでは整数の中の桁数を均等に整数に分割しようとしています

mod 10を使用して、整数の最後の桁を取得し、最後の桁を削除するために10で除算し、最終桁ごとにmodを使用して、各桁が整数全体に割り切れるかどうかを確認します。何らかの理由でエラーが発生しました(https://repl.it/CWWV/15)。

ご協力いただければ幸いです!

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    int singleD, n1; 
    int counter = 0; 
    int t = in.nextInt(); 
    for(int a0 = 0; a0 < t; a0++){ 
     int n = in.nextInt(); 
     n1 = n; 
     while (n1 > 0){ 
      singleD = n1%10; 
      n1 /= 10; 
      if(singleD != 0 && n%singleD == 0){ 
       counter++; 
      } 
     } 
     System.out.println(counter); 
     counter = 0; 
    } 

} 

編集:これで機能します。

+2

ところで、あなたのプログラムは正常に動作します。うん。あなたがリンクしているサイトで私も奇妙なエラーメッセージが表示されます。これは間違いなくあなたのプログラムではなく、このサイトのバグです。それはうまく動作するので。 EclipseのようなオフラインIDEを使用することをお勧めします。 – AnnoSiedler

+0

@AnnoSiedler [改訂履歴](http://stackoverflow.com/posts/37506571/revisions)をご覧ください。 OPは投稿コードを修正するために私の答えを組み込んだ。 –

+0

@ElliottFrischええ、私はゼロ除算のテストを追加しました。 – Avi

答えて

2

String.valueOf(int)を使用し、それを文字配列に変換します。残りが元intを有するので、カウンタをインクリメントする場合、分割から0であれば、次に、私は、各文字を反復し、試験のためにバック桁にそれを解析するfor-each loopを使用します最後に、カウントを表示します。何か

0による除算を防ぐために 0をテストするために覚えて
Scanner in = new Scanner(System.in); 
int counter = 0; 
int t = in.nextInt(); 
for (char ch : String.valueOf(t).toCharArray()) { 
    if (ch != '0' && t % Character.digit(ch, 10) == 0) { 
     counter++; 
    } 
} 
System.out.println("count = " + counter); 

、などです。

関連する問題