Соотношение элементов в массиве всегда возвращает ноль ~ HackerRank Plus Минус Проблема - PullRequest
0 голосов
/ 26 сентября 2019

Приведенный ниже код определяет количество нулей, положительных и отрицательных чисел в массиве, а затем вычисляет соотношение положительных, отрицательных и нулевых элементов в массиве.

public class Solution {

    static void plusMinus(int[] arr) {
        int pos = 0, neg = 0, zero = 0;
        int arrlength = arr.length;

        for(int i = 0; i < arrlength; i++){

           if(arr[i] > 1){
               pos += 1;
           } else if(arr[i] < 0){
               neg += 1;
           } else if(arr[i] == 0){
               zero += 1;
           }
         }

    double posfrac = pos/arr.length, negfrac = neg/arr.length, zerofrac = 
    zero/arr.length;

    System.out.println(posfrac);
    System.out.println(negfrac);
    System.out.println(zerofrac);
    }

Моя основная функция, представленная ниже, должна генерировать случайные массивы для plusMinus (), чтобы я мог тестировать plusMinus () в различных случаях.

    private static final Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        int n = scanner.nextInt();
        scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

        int[] arr = new int[n];

        String[] arrItems = scanner.nextLine().split(" ");
        scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

        for (int i = 0; i < n; i++) {
            int arrItem = Integer.parseInt(arrItems[i]);
            arr[i] = arrItem;
        }

        plusMinus(arr);

        scanner.close();
    }
}

Мой код неничего не возвращаю, когда я запускаю это.Я получаю вывод:

0.0
0.0
0.0

1 Ответ

0 голосов
/ 26 сентября 2019

Есть две проблемы с вашим кодом.Во-первых, условие проверки на положительное значение должно быть либо arr[i]>=1, либо arr[i]>0

public class Solution {

static void plusMinus(int[] arr) {
    float pos = 0, neg = 0, zero = 0;
    float arrlength = arr.length;

    for(int i = 0; i < arrlength; i++){

       if(arr[i] > 0){
           pos += 1;
       } else if(arr[i] < 0){
           neg += 1;
       } else if(arr[i] == 0){
           zero += 1;
       }
     }

double posfrac = pos/arrlength , negfrac = neg/arrlength , zerofrac = 
zero/arrlength ;

System.out.println(posfrac);
System.out.println(negfrac);
System.out.println(zerofrac);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...