Erro em código Java

Bom dia pessoal! Estou tendo dificuldades com um código, não faço ideia qual é o erro (SOS) ;-;

•Faça um programa em C++ ou Java para criar inicialmente dois arrays unidimensionais de valores reais, com tamanhos fornecidos pelo usuário.
•Se eles forem conformes ( mesmo tamanho ) efetue a soma destes dois vetores e armazene o resultado num terceiro vetor.
•Imprima todos os arrays.
•O programa deve repetir os passos anteriores enquanto o usuário desejar.

package desafio02;

/**
*@Letícia Batista de Sousa

  • Matrícula: 20201012000515
    */
    import java.util.Scanner;
    public class Desafio02 {

    public static void main(String[] args) {
    Scanner ler = new Scanner(System.in);
    double [] a;
    double [] b;
    double x;
    double z;
    double soma;
    int ta;
    int tb;
    int s;

     System.out.println ("Digite o tamanho do primeiro vetor");
     ta = ler.nextInt();
     a = new double [ta];
     
     for (int i = 0; i <= ta; i++){
         System.out.println ("Digite o valor da posição " + i + " do vetor.");
         x = ler.nextDouble ();
         a [i] = x;
     }
     
     System.out.println ("Digite o tamanho do segundo vetor");
     tb = ler.nextInt();
     b = new double [tb];
     
     for ( int j = 0; j <= tb; j++){
         System.out.println ("Digite o valor da posição " + j + "do vetor.");
         z = ler.nextDouble ();
         b [j] = z;
     }
     
     if (ta == tb) {
         for (int y = 0; y <= ta; y++){
             soma = a [y] + b [y];
             double [] c = new double [1];
             c [y] = soma + c [y--];
         }
     }
    

    }
    }

Terminal:

compile:
run:
Digite o tamanho do primeiro vetor
2
Digite o valor da posição 0 do vetor.
2
Digite o valor da posição 1 do vetor.
2
Digite o valor da posição 2 do vetor.
2
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
at desafio02.Desafio02.main(Desafio02.java:31)
C:\Users\Mayara\Desktop\FACULDADE\ESTRUTURA DE DADOS\Desafio02\nbproject\build-impl.xml:1330: The following error occurred while executing this line:
C:\Users\Mayara\Desktop\FACULDADE\ESTRUTURA DE DADOS\Desafio02\nbproject\build-impl.xml:936: Java returned: 1
BUILD FAILED (total time: 7 seconds)

Os índices de um array começam em zero, então se o tamanho for 2, você só tem os índices 0 e 1.

Então no for você tem que fazer i < ta em vez de i <= ta. O mesmo vale para os outros loops (j < tb em vez de j <= tb e y < ta em vez de y <= ta). E você pode usar também a.length (o tamanho do array a) em vez de ta.

Outro detalhe é que não precisa criar uma variável diferente em cada for, poderia ser for (int i = ...) em todos (pois desta forma o i é local ao for - só existe dentro dele - e não há conflito com os outros loops).

E na soma, você tem que criar o array c fora do loop, com o mesmo tamanho dos demais, e ir guardando os resultados nele:

double[] c = new double[ta];
for (int y = 0; y < ta; y++){
    c[y] = a[y] + b[y];
}
1 curtida