ListIterator + Cast

modolo

Mitglied
Guten Abend zusammen.

Ich habe ein wenig im Forum gestöbert, leider aber nichts passendes gefunden. Aus diesem Grunde, wäre es wirklich super, wenn ihr mich hierbei unterstützen könntet.

Folgende Aufgabenstellung bin ich gerade am bearbeiten!
Erzeugen einer Liste mit 10 Einträgen: 1, 2, 3, …, 9 und „Zehn“
Hierbei sollen die ersten 9 Zahlen in einer Schleife erzeugt und der letzte String
zusätzlich einzeln ergänzt werden
Lesen der Elemente mit einem ListIterator und Erzeugung einer neuen Liste, die die um 1 erhöhten Werte speichert: 2, 3, 4, …, 10, „Elf“

Hinweis: In der Liste werden Referenz-Objekte vom Typ Object gespeichert.
Mittels instanceof können Sie prüfen, von welchem Typ die Objekte sind.
Falls dann das Objekt z.B. vom Typ Integer ist, dann können Sie es auf Integer casten
Falls das Objekt vom Typ String ist, dann können Sie es auf String casten und
speziell von „Zehn“ auf „Elf“ umsetzen.

Bisher habe ich folgenden Code zusammengeschrieben!
Java:
import java.util.*;

public class ListIteratorUebung
{
	public static void main(String[] args)
	{
		ArrayList list = new ArrayList ();
		list.add (1);
		list.add (2);
		list.add (3);
		list.add (4);
		list.add (5);
		list.add (6);
		list.add (7);
		list.add (8);
		list.add (9);
		list.add ("zehn");
		System.out.println (list);
		Iterator myIterator = list.listIterator();
		while (myIterator.hasNext() )
		{
			Integer anElement = (Integer) myIterator.next();
			System.out.println(anElement);
		}
	}
}
 
Die erste Frage die sich mir stellt ist, wie bekomme ich es hin, aus der Liste nur die int Werte raus zu holen und dann den Strin auszugeben?
 
Dann fehlt noch der Teil:
Mittels instanceof können Sie prüfen, von welchem Typ die Objekte sind.
Falls dann das Objekt z.B. vom Typ Integer ist, dann können Sie es auf Integer casten
Falls das Objekt vom Typ String ist, dann können Sie es auf String casten und
speziell von „Zehn“ auf „Elf“ umsetzen.

Die Aufgabe ist aber irgendwie ziemlich dämlich... :wuerg: Was soll man dabei lernen?
 
So ganz dahinter gestiegen bin ich noch nicht. Aber vielleicht werde ich es ja morgen in der Vorlesung erfahren ;-).
Wollte halt ein wenig vorarbeiten und natürlich immer am Ball bleiben, um vielleicht endlich mal flüssiger Quellcodes sinnvoll zusammen schreiben kann, die mir dann auch mal was bringen ;-)

Kannst du mich dennoch ein wenig unterstützen bei meinen Fragen... Würde mich freuen 🙂
 
Zuletzt bearbeitet:
Nun gut, dann würde ich der Ausgabe wie folgt instanceof mitgeben.

Code:
			System.out.println(anElement instanceof Integer);

Soweit ich das verstanden habe und ersehen kann, gilt das der Prüfung ob ein Object zum Beispiel Integer ist oder nicht (true or false).

Mir geht es aber gerade um das Array.
Wie schaffe ich es der Schleife das Array mit hasNext mitzugeben ohne den String (Nur die int Werte) und dann den String einzeln auszugeben!
 
Zuletzt bearbeitet:
Habe noch ein wenig gebastelt.

Java:
import java.util.*;

public class ListIteratorUebung
{
	public static void main(String[] args)
	{
		LinkedList list = new LinkedList ();
		list.add (1);
		list.add (2);
		list.add (3);
		list.add (4);
		list.add (5);
		list.add (6);
		list.add (7);
		list.add (8);
		list.add (9);
		list.add ("zehn");
		System.out.println (list+"\n");
		Iterator myIterator = list.listIterator();

		try
		{
			while (myIterator.hasNext() )
			{
				Integer anElement = (Integer) myIterator.next();
				System.out.println(anElement );
				System.out.println((anElement instanceof Integer) + ("\n"));
			}
		}
		catch (Exception e )
		{

		}
		System.out.println(list.getLast());
		System.out.println(list.getLast() instanceof Integer);
	}
}

Meiner Ansicht fehlt mir nur noch die Erzeugung einer neuen Liste, die die um 1 erhöhten Werte speichert: 2, 3, 4, …, 10, „Elf“
Any Ideas?
Ich verstehe es so, dass ich eine Schleife erzeugen muss die dann auf der Console, die int-Objekte jeweils um eins erhöht und auch das String-Objekt um eins erhöht. Korrekt? Oder befinde ich mich da auf dem Holzweg?
 
Meiner Ansicht fehlt mir nur noch die Erzeugung einer neuen Liste, die die um 1 erhöhten Werte speichert: 2, 3, 4, …, 10, „Elf“
Der Code wirft beim Ausführen doch sicherlich eine Exception?
Ich verstehe es so, dass ich eine Schleife erzeugen muss die dann auf der Console, die int-Objekte jeweils um eins erhöht und auch das String-Objekt um eins erhöht. Korrekt? Oder befinde ich mich da auf dem Holzweg?
Naja, die Aufgabenstellung lautet eine neue Liste zu erstellen. In diese sollen dann die um eins erhöhten Werte aus der ersten Listen und der String "Zehn" soll durch "Elf" - Strings kann man nicht erhöhen ;-)
 
Moin Moin Zusammen.
Folgende Lösung wäre korrekt und könnte man nehmen!

Java:
public static void main(String[] args)
	{
		ArrayList list = new ArrayList();
		for (int i = 0; i < 9; i++)
		{
			list.add(i+1);
		}
		list.add("Zehn"); 
		ArrayList list2 = new ArrayList();
		ArrayList list3 = new ArrayList();
		
		//ListIterator erbt von Iterator und stellt zusätzlich eine add-Methode zur Verfügung
		ListIterator itr = list.listIterator();

		while(itr.hasNext())
		{
			for (Object obj : list)
			{    
				//if (obj.getClass() == (String.class)){   
				//if (obj instanceof String){
				if (obj.equals("Zehn"))
				{
					list2.add("Elf");
					list3.add("zwölf");
				}    
				//if (obj.getClass() == (Integer.class)){
				if (obj instanceof Integer)
				{
					list2.add((Integer)obj + 1);
					list3.add((Integer)obj +1 +1);
				}    
			}
			break;
		}
		System.out.println(list); 
		System.out.println(list2);
		System.out.println(list3);
	} 
}

Wenn nichts dagegen spricht, würde ich dann später das Thema als "erledigt" markieren.

Grüße
modolo
 
Von der list3 steht eigentlich nichts in der Aufgabenbeschreibung. Außerdem kannst du die while Schleife entfernen, die erfüllt keinen zweck.
 
Stimmt, list3 steht nichts in der Aufgabenbeschreibung. War auch nur für Testzwecke noch mal eingebaut!
Das mit der Whileschleife habe ich mal getestet.
Demnach kann man ja dann auch den
Code:
ListIterator itr = list.listIterator();
kicken.
Und schon verliert der Quellcode an Masse. Vielen Dank 🙂

Java:
import java.util.*;

public class ListIteratorArrayUebung
{
	public static void main(String[] args)
	{
		ArrayList list = new ArrayList();
		for (int i = 0; i < 9; i++)
		{
			list.add(i+1);
		}
		list.add("Zehn");
		ArrayList list2 = new ArrayList();

			for (Object obj : list)
			{
				if (obj.equals("Zehn"))
				{
					list2.add("Elf");
				}
				if (obj instanceof Integer)
				{
					list2.add((Integer)obj +1);
				}
			}
		System.out.println(list);
		System.out.println(lis2);
	}
}
 

Zurück
Oben