Arrays unbestimmter Länge

Disap

Mitglied
Moin zusammen.

Ich möchte gerne vom Anwender beliebig viele Zahlen eingeben lassen können, die dann in einem Array gespeichert werden und hinterher wieder ausgeben werden.

Mein derzeitiger Wissenstand ist insofern begrenzt, dass ich nur selbst im Quellcode ein Array mit dem Inhalt dieser Zahlen schreiben kann und das dann ausgeben, aber umgekehrt kann ich eingelesene Zeilen nicht in ein Array schreiben. Was muss ich denn da machen? :confused:

Viele Grüße
Disap
 
Hallo hallo,

Du könntest mit einer LinkedList arbeiten. Da fügst Du einfach Elemente am Ende an. Der Zugriff ist ganz einfach mit get(index)...

grüße phil
 
Okay, danke erst einmal für die Antwort.

Aber an die verketteten Listen traue ich mich nicht heran, zu schwer :suspekt:

Hat jemand eine Idee zur Array-Variante?
 
Aber an die verketteten Listen traue ich mich nicht heran, zu schwer :suspekt:
Wie kann es denn noch einfacher werden?
Java:
import java.util.ArrayList;
import java.util.List;

public class CollectionTest {

	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		
		list.add(1);
		list.add(2);
		list.add(42);
		
		for (int i : list) {
			System.out.println(i);
		}
	}
}
Ist zwar keine verkettete Liste, aber ArrayList ist meiner Meinung nach hier eher geeignet.

Grüße,
Matthias
 
Hallo,

wie wärs damit?
Java:
/**
 * 
 */
package de.tutorials;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author Tom
 */
public class InputExample {

  /**
   * @param args
   */
  public static void main(String[] args) {
    System.out.println("Enter some numbers:");
    Scanner scanner = new Scanner(System.in);
    List<Integer> numbers = new ArrayList<Integer>();

    while (scanner.hasNextLine()) {
      String line = scanner.nextLine().trim();
      if ("".equals(line)) {
        break;
      }
      numbers.add(Integer.valueOf(line));
    }

    System.out.println(numbers);
  }
}

Gruß Tom
 
Was wäre denn jetzt, wenn ich als erstes eine Zahl einlese, z. B. 10, die dann die Größe des Arrays repräsentiert?
Formulierungen wie int Array[Zahl] sind ja leider verboten...Und dannach lese ich z. B. weitere Zahlen X ein (oder wie man die auch immer bezeichnen möchte), wie kann ich die dann im Array ablegen? :confused:
 
Hallo,

dann so:
Java:
/**
 * 
 */
package de.tutorials;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author Tom
 */
public class InputExample {

  /**
   * @param args
   */
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("How many numbers?");
    int numberCount = scanner.nextInt();
    int[] numbers = new int[numberCount];
    for (int i = 0; i < numberCount; i++) {
      numbers[i] = scanner.nextInt();
    }
    System.out.println(Arrays.toString(numbers));
    scanner.close();
  }
}

Ausgabe:
Code:
How many numbers?
5
1
2
3
4
5
[1, 2, 3, 4, 5]

Gruß Tom
 
Ich stelle mich vermutlich sehr dumm an, aber ich würde das gerne etwas umschreiben und auf den Scanner verzichten. Ich will euch ja auch nicht den Quellcode klauen, sondern selbst einen erstellen :)


Code:
import java.util.Arrays;


import javax.swing.JOptionPane;
public class Array {

  public static void main(String[] args) {

		String s = JOptionPane.showInputDialog( "How many numbers?" ); 
		int NumberCount = Integer.parseInt( s ); 
		int[] Numbers = new int[NumberCount];
		
		for (int i = 0; i <=NumberCount; i++) {
			String t = JOptionPane.showInputDialog( "Integer Nr.:"+i ); 
			int Integer = Integer.parseInt( t ); 
			Numbers[i]=Integer;
		}
		
		for (int i = 0; i <= NumberCount; i++) {
			System.out.println(Numbers[i]);
			
			
		}

		}

  }

Die Eclipse meint zu der Zeile: int Integer = Integer.parseInt( t );
folgendes: Cannot invoke parseInt(String) on the primitive type int

Ich weiß, der Fehler steht schon da. Nur verstehen tu ich das nicht :-(
 
Moin!
Code:
int Integer = Integer.parseInt(t);
Ich finde man sieht hier sehr gut, warum man Variablennamen immer klein, Klassennamen immer groß schreiben sollte.
Die Fehlermeldung ist ein wenig verwirrend, aber der Compiler denkt wohl mit int Integer meinst du die Klasse Integer, und nicht den Variablennamen. Wenn du die Variable umbennenst, bzw. kleinstschreibst, dann klappt das auch...

Weiterhin wirst du mit deinen for-Schleifen einen Fehler bekommen.
Du legst dir einen Array der Größe "NumberCount" an, die Schleife macht aber "NumberCount"+1 Durchgänge.. Das solltest du dir vielleicht nochmal überlegen!

*grüssle*
MeinerEiner
 
Hallo.

Vielen Dank für die fleißige Hilfe. Das hat alles wunderbar geklappt.

Jetzt habe ich nur noch eine Frage zur Formatierung:

Code:
import java.util.Arrays;


import javax.swing.JOptionPane;
public class Test {

  public static void main(String[] args) {

		String s = JOptionPane.showInputDialog( "How many numbers?" ); 
		int NumberCount = Integer.parseInt( s ); 
		int[] Numbers = new int[NumberCount];
		
		for (int i = 0; i < NumberCount; i++) {
			String t = JOptionPane.showInputDialog( "Integer Nr.:"+i ); 
			int integer = Integer.parseInt( t ); 
			Numbers[i]=integer;
		}
		
		for (int i = 0; i < NumberCount; i++) {
			System.out.println(Numbers[i]);
			
			
		}

		}

  }

Wenn ich jetzt die eingegebenen Zahlen ausgebenlasse, dann sieht das ungefähr so aus:
1
2
3
4
5
...
Wie würde ich die Zahlen in eine Zeile bekommen und den Zeilenumbruch untersagen?
 
Zurück