Dzień dobry, mam problem z końcówką kodu. Polecenie brzmi:
Użytkownik wprowadza macierz nx2. Każdy wiersz tej macierzy reprezentuje domknięty przedział liczbowy. Program zwraca macierz, która zawiera maksymalnie połączone przedziały.
Np.
0 5
10 3
20 15
16 19
25 25
Wynik:
0 10
15 20
25 25
Kod:
package project;
import java.util.Scanner;
public class project {
public static void main(String[] args) {
int n;
int m=2;
System.out.println("Podaj liczbę wierszy macierzy: ");
Scanner odczyt1 = new Scanner(System.in);
n = odczyt1.nextInt();
if (n<=0){
System.out.println("Błędne dane!");
}
else {
System.out.println("Wymiar macierzy: "+ n+"x"+m);
}
int[][] macierz = new int[n][m];
System.out.println("Podaj elementy tej macierzy: ");
Scanner odczyt2 = new Scanner(System.in);
for (int i=0;i<n;i++) {
for (int j=0;j<m;j++) {
macierz[i][j] = odczyt2.nextInt();
}
}
System.out.println("Podana macierz: ");
for (int i=0;i<n;i++) {
for (int j=0;j<m;j++) {
System.out.print(macierz[i][j] + " ");
}
System.out.println(" ");
}
System.out.println(" ");
System.out.println("Ustawianie przedziałów od najmniejszej liczby do największej: ");
for (int i=0;i<n;i++){
if (macierz[i][0]<macierz[i][1]){
System.out.print(macierz[i][0] + " " + macierz[i][1]);
System.out.println(" ");
}
else{
System.out.print(macierz[i][1] + " " + macierz[i][0]);
System.out.println(" ");
}
}
System.out.println(" ");
System.out.println("Sprawdzenie zawierania się przedziałów: ");
for (int i=0;i<n;i++){
if (macierz[i][0]<macierz[i+1][0]){
if (macierz[i][1]>=macierz[i+1][0]&&macierz[i][1]<=macierz[i+1][1]){
System.out.print(macierz[i][0]+" "+macierz[i+1][1]);}
else if (macierz[i][1]>macierz[i+1][0]&&macierz[i][1]>macierz[i+1][1]){
System.out.print(macierz[i][0]+" "+macierz[i][1]);}
}
else if( macierz[i][0]>macierz[i+1][0]&&macierz[i][0]>macierz[i+1][1]){
System.out.println(" ");}
else if (macierz[i][0]>macierz[i+1][0]&&macierz[i][0]==macierz[i+1][1]){
System.out.print(macierz[i+1][0]+" "+macierz[i][1]);}
}
}
}
Po uruchomieniu programu pojawia się taki błąd:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at projekt8.projekt8.main(projekt8.java:55)
Rozumiem, że program nie może odwołać się do takiego indeksu, ponieważ liczba wierszy macierzy przez wypisywanie tych połączonych przedziałów się zmniejsza. Pytanie, co zrobić, żeby program mi zwrócił macierz z maksymalnymi przedziałami?