Простое упражнение с исключениями в Java - PullRequest
1 голос
/ 19 июля 2011

Вот проблема, которую нужно решить: метод класса, который представляет газовую сеть. Этот класс управляет объектами типа Line, которые представляют каждую отдельную линию подачи газа. Объект типа Line представлен следующими членами:

  • Строка startCity;
  • String EndCity;
  • intacityUsed;
  • intacityAvail;
  • int maxCapacity;

У меня проблемы с реализацией:

boolean carry(String city1, String city2, int capacity)

Рассмотрим все строки от city1 до city2. Для каждой из этих строк попробуйте использовать capacity с методом use() (я не думаю, что нужно знать, как use() работает). Если use() выдает исключение CapacitaSuperataException, ищите другие строки между city1 и city2, если других строк нет use() должен вернуть False. Если при вызове use() не выдается CapacitaSuperataExceptio n, значит, строке была присвоена capacity, а метод возвращает True.

Я пробовал некоторые решения, но не знаю, как управлять исключениями.

Спасибо

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Попробуйте использовать try-catch внутри цикла, охватывающего все подходящие строки в вашем методе переноса:

for (Line line : getLines("start", "end"))
{
  try
  {
    line.use(cap);
    System.out.println("Line used, great!");
    return true;
  }
  catch (CapacitaSuperataException e)
  {
    System.out.println("Line full, try next");
  }
}
System.out.println("No line found");
return false;
0 голосов
/ 19 июля 2011
public void use(int desiredCapacity) throws CapacitaSuperataException {
    if(desiredCapacity > maxCapacity) throw CapacitaSuperataException 
    ...
}
public void example() {
    try {
    this.use(999999)
    } catch(CapacitaSuperataException) { /* show error message */ }
}
...