Dies ist, was ich versuche zu tun: Ich lese eine Datei in der Befehlszeile ein. Die Datei enthält eine Liste von Daten, darunter sieht der Absatz aus. Das Problem, das ich habe, ist mit den if-Anweisungen.Array-Index außerhalb der Grenzen
import java.util.*;
import java.io.*;
public class VehicleTest {
public static void main(String[] args) throws FileNotFoundException {
String vehicle = "vehicle";
String car = "car";
String americanCar = "american car";
String foreignCar = "foreign car";
String truck = "truck";
String bicycle = "bicycle";
File file = new File(args[0]);
Scanner input = new Scanner(file);
String[] autos = new String[100];
ArrayList allVehicles = new ArrayList();
for (int i = 0; i < autos.length; i++) {
autos[i] = input.nextLine();
}
int j = 0;
int i = 0;
while (i++ < autos.length) {
if (vehicle.equalsIgnoreCase(autos[j++])) {
Vehicle v = new Vehicle();
v.setOwnerName(autos[j]);
allVehicles.add(v);
}else if(car.equalsIgnoreCase(autos[j++])){
Car c = new Car();
c.setOwnerName(autos[j]);
allVehicles.add(c);
}
}
for(Object a: allVehicles){
System.out.println(a);
}
}
}
In Pseudo-Code wäre dies:
while i is less than the length of the string array
if you see the word vehicle create a new vehicle object and add it to the arrayList.
if you see the word car create a new car object and add it to the arrayList.
.....
Die Probleme ist, dass ich eine arrayOutOfBounds Ausnahme mit dem Code zu erhalten Ich verwende.
Ich verstehe, dass j ++ ist was falsch ist, aber wie sonst soll ich durch die Zeichenfolge Array durchlaufen, so dass ich jede Zeile lesen und die entsprechenden Objekte erstellen kann? Ich weiß nicht, was ich tun soll. Ich brauche Hilfe.
foreign car
aMarioy
Mario's house
(777) 777-7777
[email protected]
false
black
Italy
4415.91
truck
aDougy
Doug's house
(123) 456-7890
[email protected]ug.com
30
61234.56
8/10/2003
vehicle
aRobby
Rob's house
(987) 654-3210
[email protected]
bicycle
bTommy
Tom's house
(246) 810-1214
[email protected]
7
truck
bGeorge
George's house
(666) 666-6666
[email protected]
25
51234.56
12/4/2004
vehicle
bTim
Tim's house
(111) 111-1111
[email protected]
bicycle
bJim
Jim's house
(555) 555-5555
[email protected]
5
american car
bJohn
John's house
(888) 888-8888
[email protected]
true
green
false
true
car
cKen
Ken's house
(999) 999-9999
[email protected]
false
orange
foreign car
cMario
Mario's house
(777) 777-7777
[email protected]
false
black
Italy
4415.91
american car
gSam
Sam's house
(333) 333-3333
[email protected]
false
blue
true
false
scheint es ist interessant, wie viele „versuchen, diese stattdessen“ Vorschläge gepostet werden, bevor jemand erklärt die tatsächliche e Fehler. – Tomalak
@Tomalak, Die Frage lautet: "Ich verstehe, dass j ++ falsch ist, aber wie soll ich sonst durch das String-Array iterieren, damit ich jede Zeile lesen und die entsprechenden Objekte erstellen kann?" – strager
@strager: Stimmt, aber ich bezweifle, dass diese Zeile eine Anfrage nach Alternativen sein sollte. Die ganze Post hat "warum bekomme ich diese Ausnahme?" über alles geschrieben. – Tomalak