Pessoal ao tentar executar a opção 3, 4 e5 apresenta o erro Erro Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: Index 100 out of bounds for length 100 podem me explicar pq?
- Classe retângulo
public class Retangulo {
private int base, altura;
public int getBase() {
return base;
}
public void setBase(int base) {
this.base = base;
}
public int getAltura() {
return altura;
}
public void setAltura(int altura) {
this.altura = altura;
}
public int area() {
return base * altura;
}
public boolean isQuadrado() {
return base == altura;
}
public boolean eIgual(Retangulo r) {
return r.getAltura() == this.altura && r.getBase() == this.base;
}
public void desenhar() {
for(int x = 1; x <= altura; x++) {
System.out.println();
for(int y = 1; y <= base; y++) {
System.out.print("O");
}
}
}
}
- Main da classe
import java.util.Scanner;
import Respostas.Retangulo;
public class Menu {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Retangulo r = new Retangulo();
Retangulo[] array = new Retangulo[100];
int cont = 0;
String opcao = "";
while(!opcao.equalsIgnoreCase("s")) {
System.out.println("1 - Cadastrar retângulo\r\n"
+ "2 - Desenhar um retângulo guardado em uma posição específica\r\n"
+ "3 - Encontrar o retângulo de maior área\r\n"
+ "4 - Encontrar o retângulo de menor área\r\n"
+ "5 - Informar a quantidade de retângulos cadastrados\r\n"
+ "S - Sair");
opcao = input.nextLine();
switch(opcao) {
case "1":
System.out.println("Base: ");
int base = Integer.parseInt(input.nextLine());
r.setBase(base);
System.out.println("Altura: ");
int altura = Integer.parseInt(input.nextLine());
r.setAltura(altura);
if(cont == 100) {
System.out.println("Números validos de retângulos cadastrados exedido!");
}else {
array[cont] = r;
cont++;
}
break;
case "2":
System.out.println("Qual retângulo deseja acessar?");
int acessar = Integer.parseInt(input.nextLine());
for(int i = 0; i <= array.length; i++) {
if(i == acessar) {
if(array[i] != null) {
array[i].desenhar();
System.out.println();
}else {
System.out.println("O indice está vazio!!");
}
}
}
break;
case "3":
int maior = 0;
for(int i = 0; i<= array.length;i++) {
if(array[i] != null) {
if(array[maior].area() < array[i].area()) {
maior = i;
}
}
}
System.out.println("O maior retângulo está na posição " + maior);
break;
case "4":
int menor = 0;
for(int i = 0; i<= array.length;i++) {
if(array[i] != null) {
if(array[menor].area() > array[i].area()) {
menor = i;
}
}
}
System.out.println("O maior retângulo está na posição " + menor);
break;
case "5":
int num = 0;
for(int i = 0; i<= array.length;i++) {
if(array[i] != null)
num ++;
}
System.out.printf("Foram cadastrados %d retângulos!\n", num);
break;
}
}
}
}