Skocz do zawartości
Goomba

[Java] Obliczanie pola i powierzchni koła

Rekomendowane odpowiedzi

Mam taki kod:
 

import java.util.*;public class Circle {    private double radius;        public Circle() {        this(1.0);    }        public Circle(double r) {        this(r, "m");    }        public Circle(double r, String u) {        radius = r;        if(u.equals("km")) {            radius = radius * 1000;        }    }        public void setRadius(double r) {        radius = r;    }        public double getRadius() {        return radius;    }        /**     * Oblicza obwód koła     * @return      */    public double calculateCircumference() {        return 2 * Math.PI * radius;    }    /**     * Oblicza pole koła     * @return      */    public double calculateArea() {        return Math.PI * radius * radius;    }        public static void main(String[] args) {        Scanner input = new Scanner(System.in);        System.out.println("Podajliczbę obektów: ");        int count = input.nextInt() - 1;        Circle[] circles = new Circle[count];        for (int i=0; i <= count; i++) {            System.out.println("Podaj promien koła nr. " + (i + 1) + ": ");            circles[i] = new Circle(input.nextDouble());        }                for (Circle c:circles) {            System.out.println("Obwód koła to: " + c.calculateCircumference());            System.out.println("Pole koła to: " + c.calculateArea());        }    }}

Dostaje błąd:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1	at circle.Circle.main(Circle.java:65)Java Result: 1

Mógłby ktoś mi wytłumaczyć dlaczego i gdzie jest błąd?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dlatego, że "for (int i=0; i <= count; i++)" odwołuje się do elementu, który nie istnieje. Tak wygląda działający main :

 

public static void main(String[] args) {        Scanner input = new Scanner(System.in);        System.out.println("Podajliczbę obektów: ");        int count = input.nextInt();        Circle[] circles = new Circle[count];        for (int i=0; i < count; i++) {            System.out.println("Podaj promien koła nr. " + (i + 1) + ": ");            circles[i] = new Circle(input.nextDouble());        }
  • Upvote 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...