получение строки ошибок, которые в большинстве случаев "не могут найти символы" и требуют слишком много времени для запуска - PullRequest
0 голосов
/ 07 января 2019

Я новичок в Java, и я получаю строку ошибок, и мне нужно работать вечно. Я делаю код, который может отделять четные и нечетные числа и возвращать их вместе. ошибки в основном "не могу найти символы" и кто-то может помочь мне с производительностью, пожалуйста?

Мой код:

public int operate(int[]array){
    int odd;
    int even;
    for (i = 1; i < ar.length; i++) {
        int x = ar[i];
        if(x % 2 == 0){
            // if the number is even...
            even++;
        }
        else{
            ///if the number is odd...
            odd++;
        }
    }
    int[] evenarr = even;
    int[] oddarr = odd;
    int[] returnarr = odd + even;
    int evenindex = 0;
    for (i = 1; i < ar.length; i++) {
        int x = ar[i];
        if(x % 2 == 0){
            // if the number is even...
            evenarr[evenindex] = x;
            evenindex++;
        }
        else{
            ///if the number is odd...
            oddarr[oddindex] = x;
            oddindex++;
        }
    }
    evenarr + oddarr = returnarr;

}

Ошибка:

Main.java:19: error: cannot find symbol
    for (i = 1; i < ar.length; i++)
         ^
  symbol:   variable i
  location: class Main
Main.java:19: error: cannot find symbol
    for (i = 1; i < ar.length; i++)
                ^
  symbol:   variable i
  location: class Main
Main.java:19: error: cannot find symbol
    for (i = 1; i < ar.length; i++)
                    ^
  symbol:   variable ar
  location: class Main
Main.java:19: error: cannot find symbol
    for (i = 1; i < ar.length; i++)
                               ^
  symbol:   variable i
  location: class Main
Main.java:21: error: cannot find symbol
    int x = ar[i];
            ^
  symbol:   variable ar
  location: class Main
Main.java:21: error: cannot find symbol
    int x = ar[i];
               ^
  symbol:   variable i
  location: class Main
Main.java:33: error: incompatible types: int cannot be converted to int[]
    int[] evenarr = even;
                    ^
Main.java:34: error: incompatible types: int cannot be converted to int[]
    int[] oddarr = odd;
                   ^
Main.java:35: error: incompatible types: int cannot be converted to int[]
    int[] returnarr = odd + even;
                          ^
Main.java:37: error: cannot find symbol
    for (i = 1; i < ar.length; i++)
         ^
  symbol:   variable i
  location: class Main
Main.java:37: error: cannot find symbol
    for (i = 1; i < ar.length; i++)
                ^
  symbol:   variable i
  location: class Main
Main.java:37: error: cannot find symbol
    for (i = 1; i < ar.length; i++)
                    ^
  symbol:   variable ar
  location: class Main
Main.java:37: error: cannot find symbol
    for (i = 1; i < ar.length; i++)
                               ^
  symbol:   variable i
  location: class Main
Main.java:39: error: cannot find symbol
    int x = ar[i];
            ^
  symbol:   variable ar
  location: class Main
Main.java:39: error: cannot find symbol
    int x = ar[i];
               ^
  symbol:   variable i
  location: class Main
Main.java:49: error: cannot find symbol
        oddarr[oddindex] = x;
               ^
  symbol:   variable oddindex
  location: class Main
Main.java:50: error: cannot find symbol
        oddindex++;
        ^
  symbol:   variable oddindex
  location: class Main
Main.java:53: error: bad operand types for binary operator '+'
    evenarr + oddarr = returnarr;
            ^
  first type:  int[]
  second type: int[]
Main.java:54: error: incompatible types: int[] cannot be converted to int
    return(returnarr);
           ^
19 errors

Я ожидаю, что результатом будет целочисленный массив с [четным, нечетным]

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Более Java, как и используя списки, вы можете упростить это так:

List<Integer> simplified(int[] array) {
    List<Integer> even = new ArrayList<>();
    List<Integer> odd = new ArrayList<>();
    for(int n : array) {
        if (n%2 == 0) {
            even.add(n);
        } else {
            odd.add(n);
        }
    }
    even.addAll(odd);
    return even;

}

0 голосов
/ 07 января 2019
  1. Все ошибки cannot find symbol связаны с тем, что вы не объявили переменные перед их использованием

for (i = 1; i < ar.length; i++) необходимо изменить на for (int i = 1; i < ar.length; i++), чтобы он работал.

  1. int[] evenarr = even; - Это назначение является незаконным. Я предполагаю, что вы пытаетесь сделать здесь, чтобы создать массив с размером числа четных чисел в списке. Возможно, вы захотите сделать это - int[] evenarr = new int[even]

  2. Вы не можете объединить два массива, выполнив array3 = array1 + array2

Попробуйте вместо этого -

int[] result = new int[evenarr.length + oddarr.length]; System.arraycopy(evenarr, 0, result, 0, evenarr.length); System.arraycopy(oddarr, 0, result, evenarr.length, oddarr.length);

На заметку - вам не нужно анализировать массив, чтобы найти размеры четных и нечетных чисел. Вместо этого вы можете использовать список, который динамически увеличивается (см. Список )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...