Cześć,
poniżej podałem kod, ale tutaj napiszę w czym mam problem :/ Chodzi o algorytm, który porównuje wielkości dwóch podanych tablic - jeżeli tablica a jest większa od tablicy b, to powiększamy tablicę b do wielkości a i przypisujemy dodanym argumentom wartość 0.
Jeżeli wpisuję wartość tablicy pierwszej 2, a drugiej 3 to wyskakuje mi taki błąd:
Podaj wartosc pierwszej tablicy jednowymiarowej (1-10)
3
Podaj wartosc drugiej tablicy jednowymiarowej (1-10)
2
Wynik dodawania tablic
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at defalut.Wartosci.lWartosci(MyFrame.java:45)
at defalut.MyFrame.main(MyFrame.java:10)
Oto kod źródłowy:
package defalut;
import java.util.Random;
import java.util.Scanner;
public class MyFrame{
public static void main(String[] args) {
Wartosci licz = new Wartosci();
licz.lWartosci();
}
}
class Wartosci{
void lWartosci() {
Tablica1 pW = new Tablica1();
int w = pW.pWielkosc();
int[] tablica = new int[w];
Tablica2 pW2 = new Tablica2();
int w2 = pW2.pWielkosc2();
int[] tablica2 = new int[w2];
Random r = new Random();
for(int i = 0; i < w; i++) {
tablica[i] = r.nextInt(10)+1;
}
for(int i = 0; i < w2; i++) {
tablica2[i] = r.nextInt(10)+1;
}
System.out.println("Wynik dodawania tablic");
int wieksza;
if(w2 >= w) {
wieksza = w2; // GDZIEŚ OD TEJ CZĘŚCI WYSTĘPUJE BŁĄD MOIM ZDANIEM
for(int i = w; i < w2; i++ ) {
tablica[i] = 0;
System.out.println(tablica[i]);
}
}else {
wieksza = w;
for(int i = w2; i < w; i++ ) {
tablica2[i] = 0;
System.out.println(tablica2[i]);
}
}
for(int i = 0; i < wieksza; i++) {
System.out.println(tablica[i]);
System.out.println(tablica2[i]);
System.out.println(tablica[i] + tablica2[i] + " = Suma tablic o wspolrzednej: " +(i+1));
}
}
}
class Tablica1{
int pWielkosc(){
System.out.println("Podaj wartosc pierwszej tablicy jednowymiarowej (1-10)");
Scanner s1 = new Scanner(System.in);
int x;
do {
x = s1.nextInt();
}while(x < 0 || x > 10);
return x;
}
}
class Tablica2{
int pWielkosc2(){
System.out.println("Podaj wartosc drugiej tablicy jednowymiarowej (1-10)");
Scanner s1 = new Scanner(System.in);
int x;
do {
x = s1.nextInt();
}while(x < 0 || x > 10);
return x;
}
}