java.lang.ArrayIndexOutOfBoundsException: 0

0

Witam mam problem z programem bo nie wiem czemu wywala mi taki błąd:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Lab2.<init>(Lab2.java:30)
at Lab2.main(Lab2.java:56)

import java.awt.*;
import java.awt.event.*;
public class Lab2 extends Frame
{
	public Lab2() 
	{
		addWindowListener(new Moje_zdarzenia_okno());
		int i= 0;
		int j = 0;
		int[][] tab = new int[i][j]; 
		String s = "";
		for ( i = 0 ; i < 10 ; i++)
		{
			for (j = 0 ; j <10 ; j++)
			{
				//wynik = i*j;
				tab[i][j] = i*j; //wynik;
				s += " "+tab[i][j]+" ";
				if (j == 9)
				{
					s += "\n";
				}
			}
		}
		TextArea tekst2 = new TextArea(s, 100, 300);
		this.setLayout(null);
		tekst2.setBounds(1,1,700,700);
		add(tekst2);
	}

	public static void main(String[] args) 
	{
		Lab2 okienko = new Lab2();
		okienko.setSize(new Dimension(1000, 1000));
		// okienko.setSize(300, 200);
		okienko.setTitle("Aplikacja oparta na AWT");
		okienko.setVisible(true);
		
	}
	class Moje_zdarzenia_okno extends WindowAdapter 
	{
		public void windowClosing(WindowEvent we) 
		{
		System.exit(0);
		}
	}

}
1
 
int i= 0;
int j = 0;
int[][] tab = new int[i][j]; 

Tworzysz tablicę wielkości 0, a potem starasz się dostać się do jej dziesiątego elementu.

1

tworzysz tablicę 0 elementów na 0 elementów to jak chcesz się odwołać do pierwszego elementu to się wywala

zamiast

  int i= 0;
        int j = 0;
        int[][] tab = new int[i][j]; 

nie deklaruj zmiennej po ktorych pozniej iterujesz.

zrob po prostu
int[][] tab = new int[10][10];

0

zrobiłem jak napisałeś Wojciech ale teraz wyskakuje mi Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10

1

przeleć debuggerem po pętli i sprawdz w czym jest problem

0

Zmieniłem wartości tablic i pomogło a mam jeszcze pytanie mysze jakoś ladnie sforamtować tekst tabliczki mnożenia bo jest brzydki. W zadaniu mam że musze do tego użyć System.out.println
i JOptionPane.showMessageDialog tylko nie wiem jak te funkcje połączyć bo nie moge zrobić czegoś takiego s = System.out.println();

1 użytkowników online, w tym zalogowanych: 0, gości: 1