2017-02-16 4 views
2

Мне было присвоено задание, которое заставило меня создать 3 метода, которые создали массив, напечатали массив и посчитали все числа, делящиеся на 10 в массиве. Та часть, которая дает мне больше всего хлопот подсчитывает число делящихся на 10. это код, который я до сих пор:Подсчет числа, делящегося на 10 в массиве

public int[] createArray(int size) { 

    Random rnd = new Random(); 
    int[] array = new int[size]; 

    for (int i = 0; i < array.length; i++) { 
     array[i] = rnd.nextInt(101); 
    } 
    return array; 
} 

public void printArray() { 

    Journal5a call = new Journal5a(); 
    int[] myArray = call.createArray(10); 

    for (int i = 0; i < myArray.length; i++) { 
     System.out.println(myArray[i]); 
    } 
    System.out.println("There are " + call.divideByTen(myArray[i]) + " numbers that are divisable by 10"); 
} 

public int divideByTen(int num) { 

    int count = 0; 

    if (num % 10 == 0) { 
     count++; 
    } 
    return count;   
} 

public static void main(String[] args) { 

    Journal5a call = new Journal5a(); 
    Random rnd = new Random(); 

    call.printArray(); 
} 
+1

Проход во всем массиве. Затем проведите через него и вызовите условное условие if и верните окончательный счет. –

+2

Пропустить полный массив, а не один элемент – Hemal

+0

'System.out.println (« Есть »+ call.divideByTen (myArray [i]) +« числа, которые делятся на 10 »);' 'i' выходит за рамки , –

ответ

5

Передайте массив методу, и использовать его для определения количества. Ваш алгоритм выглядит разумным. Нечто подобное,

public int divideByTen(int[] nums) { 
    int count = 0; 
    for (int num : nums) { 
     if (num % 10 == 0) { 
      count++; 
     } 
    } 
    return count; 
} 

или, в Java 8+, используйте IntStream и filter как

return (int) IntStream.of(nums).filter(x -> x % 10 == 0).count(); 

Тогда вы можете назвать это как

System.out.println("There are " + call.divideByTen(myArray) 
     + " numbers that are divisible by 10"); 

или с printf и встроенный, как

System.out.printf("There are %d numbers that are divisible by 10.%n", 
     IntStream.of(nums).filter(x -> x % 10 == 0).count()); 
+0

Кроме того, в цикле, где печатаются числа, вы можете добавить 'total + = call.divideByTen (myArray [i]);' и затем напечатать 'total', хотя потребуется новая переменная. –

0

Вы можете сделать это таким образом. Передайте полный массив, а затем проверьте деление на 10. Пропустили другую часть для простоты.

public void printArray() { 

    Journal5a call = new Journal5a(); 
    int[] myArray = call.createArray(10); 

    divideByTen(myArray); 
} 

public int divideByTen(int[] num) { 

    int count = 0; 
    for(i=0;i<num.length;i++) 
    { 
     if (num[i] % 10 == 0) { 
      count++; 
     } 
    } 
    return count;   
}