Dziękuję Ci bardzo Wojciechu bardzo mi pomogłeś, niestety natrafiłem na kolejny problem, dotyczy on dynamicznego tworzenia tablic. Problem pojawia się przy kompilowaniu na lini System.out.print(" " + bin[w][k]);
w metodzie public void tablice()
otrzymuję błąd: java.lang.ArrayIndexOutOfBoundsException: 4
. Niestety sam nie potrafię sobie poradzić z tym problemem nawet przy pomocy literatury, nie ukrywam, że brak mi doświadczenia dlatego zwracam się z prośbą o wytłumaczenie w czym tkwi problem i jaki głupi błąd zrobiłem.
Bardzo dziękuję za pouczające odpowiedzi.
import java.util.Scanner; // gotowa fusdsdnkcja pobierajaca dane na wejsciu
import static java.lang.Math.*; // pomijamy przedrostmki math dzieki static
import java.util.*;
public class test{
Scanner in = new Scanner(System.in);
int w, k, y=16, x=4;
char kod[][] = new char[w][k];
char bin[][] = new char[w][k];
public void main()
{
Wybor_modulo();
Kolumna();
tablice();
}
public void Wybor_modulo()
{
System.out.println("Podaj modulo licznika?\n");
int modulo = in.nextInt();
if ( modulo < 2)
System.out.println(" Modulo przynajmniej równe 2! ");
else if ( modulo > 16)
System.out.println(" Modulo nie może być wieksze od 16! ");
w = modulo; // ilsoc wierszy odpowiada modulo
}
public void Kolumna() // na podstawie ilośći wierszy określam ilosc kolumn
{
if( w == 2 )
k = 1;
else if( w <= 4)
k = 2;
else if( w <= 8)
k = 3;
else if( w <= 16)
k = 4;
}
public void tablice() // Na podstawie okreslonego Modulo koduje binarnie tablice
{
char q1[][] = { // 2x1 1 Przerzutnik
{ '0' },
{ '1' }
};
char q2[][] = { // 4x2 2 przerzutniki
{ '0', '0' },
{ '0', '1' },
{ '1', '0' },
{ '1', '1' }
};
char q3[][] = { // 8x3 3 przerzutniki
{ '0', '0', '0' },
{ '0', '0', '1' },
{ '0', '1', '0' },
{ '0', '1', '1' },
{ '1', '0', '0' },
{ '1', '0', '1' },
{ '1', '1', '0' },
{ '1', '1', '1' }
};
char q4[][] = { // 16x4 4 przerzutniki
{ '0', '0', '0', '0' },
{ '0', '0', '0', '1' },
{ '0', '0', '1', '0' },
{ '0', '0', '1', '1' },
{ '0', '1', '0', '0' },
{ '0', '1', '0', '1' },
{ '0', '1', '1', '0' },
{ '0', '1', '1', '1' },
{ '1', '0', '0', '0' },
{ '1', '0', '0', '1' },
{ '1', '0', '1', '0' },
{ '1', '0', '1', '1' },
{ '1', '1', '0', '0' },
{ '1', '1', '0', '1' },
{ '1', '1', '1', '0' },
{ '1', '1', '1', '1' }
};
if( w == 2)
{
for (int i = 0; i < bin.length; i++)
System.arraycopy(q1[i], 0, bin[i], 0, bin[i].length); // funkcja kopiuje z jednej tab do 2giej do danego bin[i].lengthiersza
}
else if( w <= 4)
{
for (int i = 0; i < bin.length; i++)
System.arraycopy(q2[i], 0, bin[i], 0, bin[i].length);
}
else if( w <= 8)
{
for (int i = 0; i < bin.length; i++)
System.arraycopy(q3[i], 0, bin[i], 0, bin[i].length);
}
else if( w <= 16)
{
for (int i = 0; i < bin.length; i++)
System.arraycopy(q4[i], 0, bin[i], 0, bin[i].length);
}
System.out.println("Utworzona tablica stanów licznika: ");
for(int i = 0; i < w; i++)
{
for(int j = 0; j < k; j++)
{
System.out.print(" " + bin[w][k]);
}
System.out.println();
}
System.out.println("Koniec tworzenia stanow ");
};
}