Java-апплет Возвращает "java.lang.ArithmeticException: / by zero"

Что я делаю: В приведенном ниже фрагменте кода я печатаю ось X гистограммы, которая зависит от количества слов разной длины. Например, самое большое слово имеет длину 6, поэтому ось X имеет 1,2,3,4,5,6 вдоль дна.

В чем проблема: код полностью функционален, но мне возвращается ошибка в моем методе рисования.

Что я пробовал: Изолировать строку кода, которая вызывает проблему, превратив блок кода в метод, который вызывается в методе рисования.

Используемые переменные:

lengthCountArray.length (длина массива определяет количество чисел вдоль дна)

int canvasWidth = 410; 
int inferiorLeftCornerX = 50; // this the the x point of the left corner on the x axis
int inferiorLeftCornerY = 470; // this the the y point of the left corner on the x axis
int barWidth = canvasWidth / lengthCountArray.length; // this calculates the distance for the bars
int posLabelX = barWidth / 2; // this puts the label in the centre of the bars by halving it 
posLabelX = inferiorLeftCornerX - posLabelX; // this is so that the initial number isn't indented twice

for (int a = 1; a <  (lengthCountArray.length+1); a++){
    posLabelX = posLabelX + barWidth;
    g.drawString(String.valueOf(a), posLabelX, inferiorLeftCornerY);
}

Строка, вызывающая проблемы: "int barWidth = canvasWidth / lengthCountArray.length; // это вычисляет расстояние для баров" (строка 122).

Следующие ошибки возвращаются:

Exception in thread "AWT-EventQueue-1" java.lang.ArithmeticException: / by zero
    at java_assignment.JavaAppletMain.paint(JavaAppletMain.java:122)
    at sun.awt.RepaintArea.paintComponent(RepaintArea.java:264)
    at sun.lwawt.LWRepaintArea.paintComponent(LWRepaintArea.java:54)
    at sun.awt.RepaintArea.paint(RepaintArea.java:240)
    at sun.lwawt.LWComponentPeer.handleJavaPaintEvent(LWComponentPeer.java:1267)
    at sun.lwawt.LWComponentPeer.handleEvent(LWComponentPeer.java:1150)
    at java.awt.Component.dispatchEventImpl(Component.java:4937)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Я пытался исправить это в течение нескольких часов, прежде чем перейти к Stackru, поэтому, если вам требуется дополнительная информация, пожалуйста, не стесняйтесь спрашивать!

Спасибо за просмотр моего вопроса.

1 ответ

Решение

Хотя я не хотел реализовывать случайные операторы if, мне нужно нейтрализовать деление на 0. Оператор if выглядит следующим образом:

if (lengthCountArrayLength == 0){
            lengthCountArrayLength = 1;
        }

Спасибо за ваши Коментарии. Если вы найдете лучший способ сделать это, пожалуйста, оставьте комментарий или оставьте ответ!

Другие вопросы по тегам