Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2014, 17:56   #1
Aleefa
Новичок
Джуниор
 
Регистрация: 28.12.2014
Сообщений: 2
По умолчанию Exception Java/ Исключения

Задача на исключения. Учусь на иностранном, знание языков хромает, где-то в теории упустила, в итоге не понимаю.
Дан код, который должен проверять, что в массиве все числа положительные. Если в массиве есть отр. число, должно быть создано исключение.
Код:
Код:
public class ArrayTols {
public static void checkArray (int [] array)  {
    for (int i = 0; i < array.length; i++) {
      if (array [i] < 0) {
        // Создать исключение
Задание:
1) дополните код проверяемым исключением CheckArrayException, чтобы создавалось исключение. Метод getMessage() вашего исключения должен при этом выдавать, на какой позиции в массиве найдено отрицательное число и как оно звучит. При этом должен быть выдано только первое отрицательное число из массива (наименьший индекс).
2) Дополните класс ArrayTols main – методом, вызывающим checkArray с Integer-Array
[0, 1, 2, 3, -4, 5, 6, -7]. Вставьте try-catch-Block, перехватывающий CheckArrayException и вызывающий и выдающий метод getMessage().
Пример:
java ArrayTols
> На позиции 4 найдено негативное число: -4

Все, что я пока смогла, это этот код, без исключений и трай-кэтч. И тот выдает 2 отрицательных числа.
Код:
public class ArrayTols {            
int [] array;          
 public static void checkArray (int[] array) {
    for (int i = 0; i < array.length; i++) {
       if (array [i] < 0) {
               int oti = i;
               System.out.println("На позиции" + oti + " найдено негативное число: " + array[i]); 
       }
    }
  }
  public static void main ( String[] args )   {
    ArrayTols array = new ArrayTols(); 
    int[] ar1 =  {0, 1, 2, 3, -4, 5, 6, -7};
    array.checkArray(ar1); 
  }
}
Должно ли в кэтчэ быть вот такое? Не понимаю смысл данного проверяемоего исключения (нужно ли в трай-блоке писать trows CheckArrayException) и как его использовать:
Код:
    catch (CheckArrayException e) {
            System.err.println(e.getMessage());
            e.printStackTrace();
      }
Заранее благодарна за помощь!

Последний раз редактировалось Stilet; 28.12.2014 в 18:26.
Aleefa вне форума Ответить с цитированием
Старый 30.12.2014, 21:39   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Попробовал сделать... Вот результат - 3 файла

Main.java
Код:
package ru.bugrimov;

public class Main {
    public static void main(String ... args) throws MyException {
        try {
            MyArray arr = new MyArray(20);
            arr.printArray();
        } catch (MyException myE) {
            System.err.print("ОШИБКА: " + myE);
        }
    }
}
MyException.java
Код:
package ru.bugrimov;

public class MyException extends Exception{
    public MyException(int ind, int number) {
        super("Отрицательное число \"" + number + "\" на позиции " + ind);
    }
}
MyArray.java
Код:
package ru.bugrimov;

import java.util.Random;
import java.util.Scanner;

public class MyArray {
    private static final int NUMBER = 0;
    private int [] arr = null;

    public MyArray(int size) throws MyException {
        arr = new int[size];
        initArray();
    }

    private void initArray() throws MyException{
        Random random = new Random();

        /* Задаем диапазон случайных чисел */
        Scanner scanner = new Scanner(System.in);
        System.out.println("Задайте диапазон случайных чисел:");
        System.out.print("От: ");
        int one = scanner.nextInt();
        System.out.print("До: ");
        int two = scanner.nextInt();

        for (int i = 0; i < arr.length; i++) {
            arr[i] = random.nextInt(two - one) + one;
            if(arr[i] < NUMBER) {
               throw new MyException(i, arr[i]);
            }
        }
    }

    public void printArray() {
        for (int anArr : arr) {
            System.out.print(" [" + anArr + "]");
        }
    }
}
Снимок1.PNG

Если будут вопросы пишите.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 02.01.2015, 05:09   #3
Aleefa
Новичок
Джуниор
 
Регистрация: 28.12.2014
Сообщений: 2
По умолчанию

Спасибо!!!
Отличная наводка))) Разобралась-таки)
С Наступившим!
Aleefa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Java. Исключения Novi4ok_11 Общие вопросы по Java, Java SE, Kotlin 2 28.03.2011 23:21
Исключения C++ Impuls1989 Помощь студентам 2 04.03.2011 00:51
Exception in thread "main" java.lang.NullPointerException at Main.main(Main.java:9) elpilasgsm Помощь студентам 4 18.01.2011 08:23
Exception in thread "main" java.lang.ClassFormatError: Truncated class file Pti44ka Общие вопросы по Java, Java SE, Kotlin 1 19.11.2009 19:16
Exception in thread " main " java.lang.ArrayIndexOUTofBounds 3.14oner Общие вопросы по Java, Java SE, Kotlin 2 08.11.2008 11:18