Fange Exception i forb med char Array
I følgende kode får jeg en ArrayIndexOutOfBoundsException. Jeg vil høre om det er muligt at evt. ændre i min kode, for derved at undgå denne exception, eller om man kan fange den og så gøre noget bagefter...i følgende kode, er pwd = 7X6UTt **fast kode **
og tempchar = 7U6U ** midlertidig kode **
, som det det kan ses mangler der "Tt", i tempchar. Når jeg kører koden tager jeg bogstav ad gangen og sammenligner dem, men efter at U'erne er sammenlignet, får jeg exception, og det er jo klart.
Både pwd og tempchar er char [ ].
public void findCharFejl(char [] c) {
char [] tempchar = new char[30];
tempchar = c;
char [] pwd =new char[30];
pwd = tmp.toCharArray();
ArrayList fejllist = new ArrayList(); //Forkert indtastede bogstaver eller cifre.
ArrayList glemtlist = new ArrayList(); //Undladt at skrive en/flere bogstaver eller cifre.
ArrayList langlist = new ArrayList(); //Skrevet for mange bogstaver eller cifre.
// ArrayList tmplist = new ArrayList();
int t1 = tempchar.length;
int t2 = pwd.length;
//hvis indhold af tempchar er lig NULL.
for(int j=0;j<pwd.length;j++)
{
try
{
if(t1==0)
{
System.out.println("NULL");
break;
}
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("Hvis felt er tom: "+e.getMessage());
}
try
{
if(t1==t2) //Begge koder er lige lange.
{
if(tempchar[j]==pwd[j])
{
System.out.println(tempchar[j]+" Er ens "+pwd[j]);
}
else
{
fejllist.add(new Character(tempchar[j]));
System.out.println("Bogstavet stemmer ikke: "+tempchar[j]);
}
}
else if(t1<t2) //tempchar's længde er mindre end pwd.
{
int t3 = t2-t1;
int tal=pwd.length - t3;
ArrayList chGet = new ArrayList();
if(pwd[j]==tempchar[j])
{
System.out.println(tempchar[j]+" Er ens "+pwd[j]);
tæller++;
}
else
{
// Med denne ArrayList indsættes det bogstav som mangler for at se
// om der evt. mangler flere bogstaver.
for(int k=0;k<tempchar.length;k++)
{
System.out.println("tempolaritet "+tempchar[k]);
}
for(int i=0;i<tempchar.length;i++)
{
chGet.add(i,new Character(tempchar[i]));
}
// System.out.println("der mangler "+tæller+" bogstav(er)"+ " og chGet er: " + chGet.toString());
chGet.add(tæller,new Character(pwd[j]));//tilføjer det glemte bogstav
tæller=0;
// System.out.println("der mangler "+t3+" bogstav(er)"+ " og chGet er: " + chGet.toString());
String str = chGet.toString().replaceAll(", ","").replace("[","").replace("]","");
chGet.clear();
chGet.add(str);
for(int u=0;u<chGet.size();u++)
{
tempchar=chGet.get(u).toString().toCharArray();
}
// System.out.println("tempchar til sidst "+tempchar.length + " " + tempchar.toString());
glemtlist.add(new Character(pwd[j]));
System.out.println("Der mangler et "+pwd[j]);
findCharFejl(tempchar);
break;
}
}
else //tempchar's længde er større end pwd.
{
int t4=t1-t2;
int tal=0;
// System.out.println("Der er "+t4+" bogstav(er) for meget");
if(tempchar[j]==pwd[j])
{
System.out.println(tempchar[j]+" Er ens "+pwd[j]);
tal++;
}
else
{
ArrayList chArr = new ArrayList();
// fylder ArrayList med hele charArray-ordet
for(int s=0;s<tempchar.length;s++)
{
chArr.add(s,new Character(tempchar[s]));
}
chArr.remove(tal);
System.out.println("tempchar er nu (1): " + chArr.toString());
// Omdanner ArrayList til char[].
/* for(int t=0;t<chArr.size();t++)
{
tempchar = chArr.get(t).toString().toCharArray();
}
System.out.println("tempchar er nu2: " + tempchar.length);
for(int k=0;k<tempchar.length;k++)
{
System.out.println("I for løkke "+tempchar[k]);
}*/
// chArr.remove(tempchar[j]);
System.out.println("tempchar er nu 3: " + tempchar.length);
String glu=chArr.toString().replaceAll(", ","").replace("[","").replace("]","");
chArr.clear();
chArr.add(glu);
langlist.add(new Character(tempchar[j]));
System.out.println("Der er et "+tempchar[j]+" for meget");
break;
}
}
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("fejl i første catch: " + e.getCause()+ " " + e.getLocalizedMessage());
}
catch(IndexOutOfBoundsException e)
{
System.out.println("fejl i anden catch: " + e.getCause()+" " + e.getMessage());
}
}
}