[Java] Mata in vektor från kommandofönstret
Jag vill kunna skriva tex "1 5 24 250 6" och så ska det lagras i en vektor i programmet. Längden ska ej behöva specificeras vid inmatningen utan den ska mata in så länge den hittar ett heltal till (separerade med space som default brukar vara).
Finns det ingen enkel metod för detta?
Jag har försökt lite (nybörjare som jag är) med objekt av den nya Scanner-klassen som låter mig använda instans-metoden nextInt().
java.util.Scanner in1 = new java.util.Scanner(System.in);
java.util.Vector v1 = new java.util.Vector();
v1.addElement(in1.nextInt());
Detta tex ger nåt varningsmeddelande om att det är osäker kod eller nåt. Dessutom när jag kör v1.trimToSize() för att sedan ta v1.capacity för att få längden på det inmatade så blir det alltid 1.
Metod 2 jag testade var typ såhär och den hoppar aldrig ur loopen förrens jag matar in tex en bokstav. Dessutom när den ska skriva ut vektorn så om jag matat in 5 element skriver den ut dom men följt av lika många nollor så något är säkert galet med denna inmatnings-slinga.
while (in1.hasNextInt()) {
a1[i]= in1.nextInt();
i++;
}
Vet inte om man kanske kan mata in det hela som en sträng istället och sedan göra om strängen till vektor om det finns nån sådan funktion?
Kan vara en del fel eller otydligheter i allt detta för jag har typ 3 olika program blandat i samma fil med massa utkommenterade rader överallt
Edit: Jo men det gick ju att lösa....med 3 Scanner-objekt. Först låta det första (från System.in) hämta in hela raden till en sträng, sedan loopa genom den med massa nextInt() och räkna hur många det finns. Sedan skapa en så stor array och låta det tredje Scanner-objektet läsa in int för int i arrayen
public static void main(String[] args) {
System.out.println("Mata in en vektor med heltal: ");
java.util.Scanner in1 = new java.util.Scanner(System.in);
String s1 = in1.nextLine();
java.util.Scanner in2 = new java.util.Scanner(s1);
java.util.Scanner in3 = new java.util.Scanner(s1);
int i = 0;
while (in2.hasNextInt()) {
in2.nextInt();
i++;
}
int[] a2 = new int[i];
for (int i2 = 0; i2 < i; i2++) {
a2[i2] = in3.nextInt();
System.out.print(a2[i2] + " ");
}
Och fan ta den som skrattar åt min lösning
CCNA sedan juni 2006