Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
12 / 12 / 4
Регистрация: 19.11.2014
Сообщений: 37
1

Ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at program.main(program.java:25)

21.10.2015, 11:58. Показов 865. Ответов 3
Метки нет (Все метки)

Всем привет, только начал изучать java, помогите исправить ошибку в заголовке, и если не сложно, скажите, как можно уменьшить текст программы (создание массива с рандомными данными в промежутке от 1 до 31, вывод в строку сначала четных, потом нечетных, если четных больше - вывод YES, если нечетных - вывод NO, количество элементов массива нечетное):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.Arrays;
import java.util.Random;
public class program{
  public static void main(String[] argv){
    int n=5;
    int[] a = new int[n];
    int j=0;
    int k=0;
    for(int i = 0; i < n; i++) {
      a[i] = ((int)(Math.random() * 30)+1);
      if (a[i]%2==0) {
        j=j+1;
      }
      else {
        k=k+1;
      }
    }
    int[] b = new int[j];
    int[] c = new int[k];
    j=0;
    k=0;
    for(int i = 0; i < n; i++) {
      if (a[i]%2==0) {
        j=j+1;
        b[j]=a[i];
      }
      else {
        k=k+1;
        c[k]=a[i];
      }
    }
    for(int i = 0; i < j; i++) {
      System.out.print(b[i]+" ");
    }
    System.out.println();
    for(int i = 0; i < k; i++) {
      System.out.print(c[i]+" ");
    }
    System.out.println();
    if (j>k) {
      System.out.println("YES");
    }
    else {
      System.out.println("NO");
    }
  }
}
Умею писать только на bash'e, поэтому решил просто попытаться делать задачки, гугля операторы и синтаксис.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2015, 11:58
Ответы с готовыми решениями:

Ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at pr4.RSA.main(RSA.java:44)
package pr4; import java.math.BigInteger; import java.security.SecureRandom; public...

Ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
Здравствуйте у меня такая проблема: Exception in thread &quot;main&quot;...

Ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
Посмотрите пожалуйста, что тут не так. Битый час сижу голову ломаю, никак додуматься не могу....

Ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
Добрый день! Дабы разобраться с объектами решил написать простую программу для вывода чисел...

3
206 / 206 / 71
Регистрация: 25.02.2014
Сообщений: 569
21.10.2015, 12:24 2
AmFi, нумерация в массиве [0...n-1]
1
12 / 12 / 4
Регистрация: 19.11.2014
Сообщений: 37
21.10.2015, 12:28  [ТС] 3
Kochmarik, везде добавил -1, всё равно та же ошибка, компиляция проходит нормально, а на выводе сообщение
Java
1
2
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
    at program.main(program.java:25)
и цифры иногда меняются
0
745 / 492 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
21.10.2015, 12:35 4
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
 
public class TestMainProgram {
    public static void main(String[] args) {
        int lengthArray;
 
        //воддим длину массива, пока она не будет нечётным числом
        Scanner readLength = new Scanner(System.in);
        System.out.print("Введите длинну массива (нечётное число): ");
        while (true) {
            lengthArray = readLength.nextInt();
            if (lengthArray % 2 != 0) break;
        }
        readLength.close();
 
        //создаём массив
        int[] a = new int[lengthArray];
 
        //задаём ему элементы и ищем чётные
        int count = 0;
        Random random = new Random();
        for( int i = 0; i < a.length; i++){
            a[i] = random.nextInt(31) + 1;
            if (a[i] % 2 == 0) count++;
        }
 
        //Выводим наш массив
        System.out.print("Массив: " + Arrays.toString(a));
 
        //ответ
        String yes = "NO";
        if (a.length - count < count) yes = "YES";
 
        //выводим в строку чётные элементы
        System.out.print("\nЧётные: ");
        for (int i = 0; i < a.length; i++) {
            if (a[i] % 2 == 0) System.out.print(a[i] + " ");
        }
 
        //выводим в строку нечётные элементы
        System.out.print("\nНечётные: ");
        for (int i = 0; i < a.length; i++) {
            if (a[i] % 2 != 0) System.out.print(a[i] + " ");
        }
 
        //выводим ответ
        System.out.print("\nANSWER: " + yes);
    }
}
Добавлено через 1 минуту
Вот думаю более красиво....ибо длинна задаётся пользователем и только нечётное... При чётном запрашивает ввод снова

Добавлено через 2 минуты
А ошибка в твоём коде тут:

j=j+1;
b[j]=a[i];

поменяй местами:

b[j]=a[i];
j=j+1;

или у тебя заполняется не с 0, а с 1 и в итоге выходит за границы массива

Добавлено через 43 секунды
k=k+1;
c[k]=a[i];
естественно тоже поменять местами!!!

Добавлено через 1 минуту
и пиши не как в паскале k = k + 1;
а k++ или j++ (это сокращённый вариант)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2015, 12:35

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
import java.util.Scanner; public class Filter { public static void main (String args) {...

Ошибка: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
Задача такая: из файла эксель считываются значения в матрицу, нужно подсчитать среднее...

Ошибка: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
Код реализации стека: package Class; class Stack { private int top; private int...

Ошибка: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
Линейный массив заполняется случайными вещественными числами из диапазона package com.company; ...

Нужна подсказка. Ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
Подскажите пожалуйста в чем моя ошибка. Данная ошибка возникает в 79, 80 и 85 строках. /** *...

Ошибка "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3"
Доброго времени суток. Я решил написать программу чисто для себя, но мне постоянно выдает ошибку на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.