Dostaję komunikaty wyjątków, lecz przyczyny są dla mnie całkowicie niezrozumiałe. Program konwertuje liczby z zapisu w systemach liczbowych od 2 do 16 na zapis w zystamie 10. Kod jest niekompletny o wyrzucanie własnych wyjątków. Linie w których pojawiają się wyjątki z komunikatu są zaznaczone komentarzami po prawej stronie kodu.
--------------------Configuration: <Default>--------------------
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at SystemyLiczbowe.naDziesietny(TESTY.java:53)
at TESTY.main(TESTY.java:67)Process completed.
import java.lang.Math;
import java.lang.Integer;
import java.io.*;
import java.lang.String;
class SystemyLiczbowe
{
public String naDziesietny(int sWejsciowy, String liczba) // sWejsciowy = <2 , 16> , wyjatek IO
{
char[] liczbaChar = liczba.toCharArray();
int[] liczbaInt = new int[liczbaChar.length]; // miejsce dla liczby w int[]
// Maszynka: konwersja char -> int i sprawdzenie poprawnosci liczby
for(int i = 0; i < liczbaInt.length; i++)
{
switch(liczbaChar[i])
{
case '0': liczbaInt[i] = 0;
case '1': liczbaInt[i] = 1;
case '2': liczbaInt[i] = 2;
case '3': liczbaInt[i] = 3;
case '4': liczbaInt[i] = 4;
case '5': liczbaInt[i] = 5;
case '6': liczbaInt[i] = 6;
case '7': liczbaInt[i] = 7;
case '8': liczbaInt[i] = 8;
case '9': liczbaInt[i] = 9;
case 'A': liczbaInt[i] = 10;
case 'B': liczbaInt[i] = 11;
case 'C': liczbaInt[i] = 12;
case 'D': liczbaInt[i] = 13;
case 'E': liczbaInt[i] = 14;
case 'F': liczbaInt[i] = 15;
default: // wyrzucenie wyjatku niewłasciwej liczby
}
if(liczbaInt[i] > sWejsciowy)
{
// wyrzucenie wyjatku niewłaściwej liczby
}
}
// koniec Maszynki
// przeliczenie na system dziesiętny:
int wynik = 0;
for(int i = 0; i < liczbaInt.length; i++)
{
double potega = Math.pow((double)sWejsciowy, (double)i);
wynik = wynik + (liczbaInt[liczbaInt.length - i] * (int)potega); /// ***** LINIA 53 Z KOMUNIKATU
}
return Integer.toString(wynik);
}
}
public class TESTY {
public static void main(String[] args)
{
new SystemyLiczbowe().naDziesietny(2, "11"); /// ***** LINIA 67 Z KOMUNIKATU
}
}