Вывести количество чисел в массиве, кратное 3

#java #arrays #divide

#java #массивы #разделить

Вопрос:

Я новичок в Java и работаю над базовой программой, которая просматривает массив и выдает на печать количество чисел в массиве, кратное 3. У меня возникли некоторые проблемы с тем, чтобы заставить его работать правильно. Вот код, который у меня есть на данный момент.

 package arraysearch;

public class Intsearch {

    public static void main(String[] args) {

    }

    public static void multiple_3 (int[] a, int b)  {
        b=0;        
    }
    {
        int[] numarray ={3, 9, 45, 88, 23, 27, 68};
        {
            if (numarray % 3)==0;
                b = b 1;
        }
        System.out.println("This is the amount of numbers divisible by 3:"  b)
    }   
}
  

Комментарии:

1. Вам действительно следует ознакомиться с руководством по правильному синтаксису операторов if и о том, как использовать циклы for.

2. Можете ли вы сказать нам, что работает неправильно? Вы никогда не вызываете multiple_3, поэтому оно никогда не будет выполнено.

3. Не могли бы вы уточнить, какие именно ошибки вы получаете? Это ошибки времени компиляции или выполнения?

4. Вы должны поработать над своим отступом, над if-операторами (их основным синтаксисом), объяснить, для чего полезен пустой main-метод (порадовать компилятор?). b = b 1, кстати, эквивалентно b = 1, что совпадает с b, при отсутствии другого кода.

5. у вас не должно быть } { после b = 0;

Ответ №1:

Попробуйте это (Java 7):

 public static void main(String[] args) {
    multiple_3(new int[] { 3, 9, 45, 88, 23, 27, 68 });
}

public static void multiple_3(int[] ints) {
    int count = 0;
    for (int n : ints) {
        if (n % 3 == 0) {
            count  ;
        }
    }
    System.out.println("This is the amount of numbers divisible by 3: "   count);
}
  

Обновление Java 8:

 public static void multiple_3(int[] ints) {
    long count = IntStream.of(ints).filter(n -> n % 3 == 0).count();
    System.out.println("This is the amount of numbers divisible by 3: "   count);
}
  

Комментарии:

1. Спасибо! Код работает отлично, и теперь я вижу, что все, что я делал неправильно. Я не уверен, как, но я совершенно забыл о способе увеличивать подобную переменную.

2. Извините, я понимаю, что это в значительной степени из-за стиля, но я отредактировал код, чтобы использовать скобки. Я думаю, новичкам следует посоветовать всегда использовать их; эксперты могут удалить их позже, если захотят.

Ответ №2:

Вам понадобится цикл for для последовательной оценки каждого элемента в массиве:

  int[] numarray = { 1, 2, 3 };
 for (int i = 0; i < numarray.Length; i  )
 {
     if (numarray[i] % 3 == 0)
     {
         b  ;
     }
 }
  

Комментарии:

1. @mods: Я ошибся с редактированием сводки из-за автозаполнения, я исправил только теги кода. Извините.

2. numarray.Length; разве Java — возможно, dot-net? Однако — упрощенный цикл for здесь хорошо подошел бы: for (int i: numarray) if (i % 3 == 0) count; Использовать i для индекса — нормально, использовать b для подсчета — нет.

3. Спасибо! Это действительно помогло. Массив чисел. Длина сейчас выходит за рамки моего уровня квалификации, но она работает.

Ответ №3:

Пожалуйста, попробуйте :

    int b=0;        

   int[] numarray ={3, 9, 45, 88, 23, 27, 68};

   for ( int i=0; i<numarray.length; i  )
   {   
       if (numarray[i]%3==0)
           b  ;
   }   
   System.out.println("This is the amount of numbers divisible by 3:"  b)
  

Комментарии:

1. Здесь хорошо подошел бы упрощенный цикл for: for (int i: numarray) if (i % 3 == 0) count; Использовать i для индекса — нормально, использовать b для подсчета — нет.

2. @неизвестный пользователь: Спасибо! Причина использования b не в мире соглашений об именах, а в Mr. mattj. следите за тем, кто пытается использовать переменную с именем b, и не путайте его сильно с другим именем (где имя вторично по отношению к логике, искомой в этом контексте)

3. @пользователь неизвестен: Кажется, мистер Мэттджей. ware кто пробует основы Java, как ваш покорный слуга, я нахожу более тесное родство с этим использованием, как кажется, с Mr. mattj.ware. Мы, несомненно, вскоре перейдем на более высокие уровни, как только разберемся с основами

4. Спасибо за ваш вклад, я смог выяснить, что все, что я делал неправильно.