kabelnisse Posted July 11, 2004 Share Posted July 11, 2004 Hej! när jag kör programmet så får ja hela tiden det här meddelandet, har försökt kolla i docs men kan inte komma på felet. kan nån hjälpa mig !!! Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException?? Link to comment Share on other sites More sharing options...
-Patrik Johansson- Posted July 11, 2004 Share Posted July 11, 2004 Du försöker komma åt ett värde/objekt som ligger utanför en arrays storlek. Säg att du har en array som har tre värden och du försöker att komma åt index nummer fyra, som inte finns, då¨får du detta fel. //Patrik J "Insanity: doing the same thing over and over again and expecting different results." - citat av Albert Einstein Link to comment Share on other sites More sharing options...
Anders N Posted July 11, 2004 Share Posted July 11, 2004 Som felmeddelandet säger... Du har en array där du försöker komma åt ett index som ligger utanför giltiga värden.. T.ex. att du har fyra element i en array, och försöker komma åt det femte. Antar att java startar sina arrayer med index 0... Då är giltiga index 0-3, men du försöker komma åt index 4. Det vanligaste är nog att man har en for-loop, där man stegar från 0 till antal, istället för det korrekta 0 till antal-1. Ciao, Anders Link to comment Share on other sites More sharing options...
fhe Posted July 11, 2004 Share Posted July 11, 2004 har försökt kolla i docs men kan inte komma på felet. Du har ju redan fått svar men får man föreslå att du byter "docs"? I den riktiga dokumentationen har det alltid stått så här som första mening på ovanstående exception: "Thrown to indicate that an array has been accessed with an illegal index. The index is either negative or greater than or equal to the size of the array." ( http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ArrayIndexOutOfBoundsException.html ) Link to comment Share on other sites More sharing options...
kabelnisse Posted July 12, 2004 Author Share Posted July 12, 2004 // Nu har jag försökt ett tag men lyckas inte //kompileringen går bra men int exec // Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException?? //hjälp! public class FileCopy { public static void main(String[] args) { try { File inFile = new File(args[0]); File outFile = new File(args[1]); FileInputStream inStream = new FileInputStream(inFile); FileOutputStream outStream = new FileOutputStream(outFile); System.out.println("Kopierar " + args[0] + " till " + args[1] + "!"); int i; while ((i = inStream.read()) != -1) { outStream.write(i); } inStream.close(); outStream.close(); } catch (IOException e) { System.out.println("Användning: java FileCopy infil utfil"); } } } Link to comment Share on other sites More sharing options...
-OZn- Posted July 12, 2004 Share Posted July 12, 2004 Har du anget filerna för args[0] och args[1]? När du kör filen från dos-promten måste du ju ange vilken fil som ska kopieras... Exempelvis, om du har FileCopy och en textfil som heter TextFil1.txt liggandes direkt under C:\ så kan du skriva: C:\>java FileCopy TextFil1.txt Kopian.txt /OZn _______________________________________________________ Microchips - De små potatisflingorna du äter allra sist i chipspåsen [inlägget ändrat 2004-07-13 01:22:38 av OZn] Link to comment Share on other sites More sharing options...
fhe Posted July 13, 2004 Share Posted July 13, 2004 Rent generellt så skulle det ju inte skada om du talar om vilken rad som kastar undantaget. I det här fallet använder du emellertid bara en array så det borde vara som OZn säger. Har du skrivit koden själv eller kom den med i en skoluppgift? I det senare fallet känns det som om någon skulle ha berättat hur man ska använda programmet (även om det står längst ner). Link to comment Share on other sites More sharing options...
lizardKng Posted July 13, 2004 Share Posted July 13, 2004 } catch (IOException e) { System.out.println("Användning: java FileCopy infil utfil"); } Om du ändrar det till } catch (Exception e) { System.out.println("Användning: java FileCopy infil utfil"); } tror jag programmet gör så som det är tänkt. ArrayIndexOutOfBoundsException är inte en underklass till IOException, därför fångas det inte. Kolla på http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ArrayIndexOutOfBoundsException.html [inlägget ändrat 2004-07-13 09:44:35 av lizardKng (pa9876)] Link to comment Share on other sites More sharing options...
kabelnisse Posted July 13, 2004 Author Share Posted July 13, 2004 Tack för det lizardKng det funkar !! ha en bra dag! Link to comment Share on other sites More sharing options...
lizardKng Posted July 13, 2004 Share Posted July 13, 2004 Ha en bra dag du med Link to comment Share on other sites More sharing options...
lizardKng Posted July 13, 2004 Share Posted July 13, 2004 Svarar igen, naturligtvis ska man göra något liknande detta istället: (Borde inte ... bibehålla indenteringen?) public class FileCopy { public static void main(String[] args) { if(args.length<2) { System.out.println("Användning: java FileCopy infil utfil"); return(-1); } try { File inFile = new File(args[0]); File outFile = new File(args[1]); FileInputStream inStream = new FileInputStream(inFile); FileOutputStream outStream = new FileOutputStream(outFile); System.out.println("Kopierar " + args[0] + " till " + args[1] + "!"); int i; while ((i = inStream.read()) != -1) { outStream.write(i); } inStream.close(); outStream.close(); } catch (Exception e) { e.printStackTrace(); } } } [inlägget ändrat 2004-07-13 13:00:56 av lizardKng (pa9876)] Link to comment Share on other sites More sharing options...
fhe Posted July 13, 2004 Share Posted July 13, 2004 bibehålla indenteringen Det vore önskvärt, ja. Dock är det inte så. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.