2016-05-29 16 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

Кстати: ваша программа работает отлично. Да; на связанном вами сайте я также получаю странное сообщение об ошибке. Это определенно ошибка этого сайта, а не вашей программы. Потому что это работает отлично. Я бы порекомендовал вам вместо этого использовать автономную среду IDE, например eclipse. – AnnoSiedler

+0

@AnnoSiedler Я предлагаю вам увидеть [историю изменений] (http://stackoverflow.com/posts/37506571/revisions); OP включил мой ответ, чтобы исправить опубликованный код. –

+0

@ ElliottFrisch Да, я добавил тестирование на деление на ноль. – Avi

ответ

2

Я бы использовал String.valueOf(int), а затем преобразовал его в массив символов. Далее, я хотел бы использовать for-each loop для перебора каждого символа и разобрать его обратно к цифре для тестирования, если остаток является 0 от деления с оригинальным int и если да увеличивает счетчик. Наконец, отобразите счетчик. Нечто подобное,

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); 

Вспоминая, чтобы проверить на 0 для предотвращения деления на 0.