Strings aus Methode zurückgeben

ghyme

Mitglied
Hallo,

ich entwickle gerade eine Android-App mit Java und habe ein grundsätzliches Problem mit Strings, die ich aus ner Funktion zurückgeben will.

Ich benutze in der folgenden Funktion einen SAX XML Parser und hole mir daraus ein paar Attribute:

Java:
	public void parseXML() {
		 
        String parsedData = "";

        try {
 
            Log.w("AndroidParseXMLActivity", "Start");
            /** Handling XML */
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp = spf.newSAXParser();
            XMLReader xr = sp.getXMLReader();
 
            XMLContentHandler myXMLHandler = new XMLContentHandler();
            xr.setContentHandler(myXMLHandler);
   
            AssetManager assetManager = getAssets();
	        InputStream inputStream = null;
	           try {
	               inputStream = assetManager.open("calimero.xml");
	           } catch (IOException e) {
	               Log.e("tag", e.getMessage());
	           }
	        xr.parse(new InputSource(inputStream)); 

            ArrayList<Datapoint> itemsList = myXMLHandler.getItemsList();
            int datapoint_size = itemsList.size();
            String xml_names[]  = new String [datapoint_size];
            String xml_states[]  = new String [datapoint_size];
            String xml_dptIDs[] = new String [datapoint_size];
            String xml_groupadresses[]  = new String [datapoint_size];
            String xml_mainNumbers[]  = new String [datapoint_size];
            String xml_priority[]  = new String [datapoint_size];
            
            for(int i=0;i<itemsList.size();i++){
            	Datapoint item = itemsList.get(i);
                parsedData = parsedData + "----->\n";
                parsedData = parsedData + "Name: " + item.getName() + "\n";
                xml_names[i] = item.getName();
                parsedData = parsedData + "stateBased: " + item.getStateBased() + "\n";
                xml_states[i] = item.getStateBased();
                parsedData = parsedData + "mainNumber: " + item.getMainNumber() + "\n";
                xml_mainNumbers[i] = item.getMainNumber();
                parsedData = parsedData + "dptID: "+ item.getDptID() + "\n";
                xml_dptIDs[i] = item.getDptID();
                parsedData = parsedData + "Groupadress: "+ item.getGroupadress() + "\n";
                xml_groupadresses[i] = item.getGroupadress();
                parsedData = parsedData + "priority: "+ item.getPriority() + "\n";
                xml_priority[i] = item.getPriority();
            }
            //TODO die Werte auch außerhalb der Methode verfügbar machen
            Log.w("AndroidParseXMLActivity", "Done");
        }
        catch (Exception e) {
            Log.w("AndroidParseXMLActivity",e );
        }    
    }

Wie bekomme ich die einzelnen Strings der Items also z.B. xml_names[0] als Rückgabewert aus der Funktion raus? Ist das überhaupt der richtige Weg? Habe auch schon versucht, die z.B.
Java:
static String xml_names[];
als globale Variable zu definieren, erhalte dann aber eine Null Pointer Exception...
Kann die Funktion auch nicht als "private static" definieren, weil die getassets()-Funktion eine nicht statische Methode ist.

Weiß jemand Rat und kann mir vllt sogar ein kleines Code Snippet posten?

Danke!
 

Andy17

Aktives Mitglied
Hey, mir hat damals dieser Link hier sehr weitergeholfen, das Programm mit XML-Config welches ich damals verfasst habe darf ich leider nicht posten.

Java XML Tutorial

Ich hoffe ich kann dir damit helfen :)
MFG Andy
 
N

nillehammer

Gast
Habe anhand Deines Codes nicht ganz verstanden, was du da machen willst. Aber du willst ja offensichtlich mehr als einen String aus der Methode rausgeben. Warum also nicht einen String[] als return-Wert oder eine Instanz einer selbst erstellten Ergebnis-Klasse mit entsprechenden Gettern?
 

ghyme

Mitglied
Habe anhand Deines Codes nicht ganz verstanden, was du da machen willst. Aber du willst ja offensichtlich mehr als einen String aus der Methode rausgeben. Warum also nicht einen String[] als return-Wert oder eine Instanz einer selbst erstellten Ergebnis-Klasse mit entsprechenden Gettern?

Die For-Schleife erstellt mir jeweils Objekte mit den benötigten Attributen. Ich möchte diese Attribute in meiner Main-Funktion nutzen.

Habe das probiert mit dem String[] als Rückgabewert, aber ich hab ja mehrere String-Arrays und kann nicht alle mit einem return Befehl zurückgeben.
 
N

nillehammer

Gast
Als return-Value geht auch String[][]. Aber mehrdimensionale Arrays find ich persönlich doch recht sperrig. Schreibe Dir dann lieber eine Klasse, die die einzelnen String-Arrays als Instanzvariablen hält und über Getter zugreifbar macht.
[EDIT]
Oder eine Klasse, die jeweils die Strings enthält, die Du über die gleiche Index-Nummer identifizierst und als Rückgabewert eine Liste/Array von Instanzen dieser Klasse.
[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:

Michael...

Top Contributor
Warum die String Arrays? Warum gibst Du nicht einfach die List mit den DataPoint Objekten zurück? Die enthalten doch alle Informationen. Gerade mit XMLs lässt sich doch schön objektorientiert programmieren.

Die dauernde String-Verkettung von parsedData ist unschön besser mit StringBuffer oder StringBuilder arbeiten.
 

ghyme

Mitglied
Hab das Problem nun gelöst, habe als Rückgabewert Datapoint angegeben und mit return das erzeugte item zurückgegeben. Dann kann ich in der Main-Funktion mit z.B. item.getName() den String auslesen.

Vielen Dank!
 

Bernd Hohmann

Top Contributor
ich entwickle gerade eine Android-App mit Java und habe ein grundsätzliches Problem mit Strings, die ich aus ner Funktion zurückgeben will.

4 Varianten:

Variante 1: Arrays werden "by reference" übergeben, da kann man etwas tricksen: Vorher die String-Arrays entsprechend dimensionieren und dann in der Methode befüllen. Du darfst halt in der Methode dann halt kein "xml_names = new String[]..." machen weil damit ein neues Objekt erzeugt wird. Nachteil: Du musst vorher wissen, wieviele Elemente da ankommen.

Code:
public class ByReference {
	public static void main(String[] args) {
		String x1[] = new String[2];
		String x2[] = new String[2];
		parseXML(x1, x2);
		System.out.println(x1[0] + " # " + x2[1]);
	}

	private static void parseXML(String xml_names[], String xml_states[]) {
		xml_names[0] = "Name 1";
		xml_names[1] = "Name 2";
		xml_states[0] = "State 1";
		xml_states[1] = "State 2";
	}
}

Variante 2: Wenn Du dieses Bündel an Arrays noch weiter herumreichen willst, würde ich mir eine Helferklasse bauen in der alle Arrays enthalten sind und dann die Helferklasse zurückgeben. Hat den Vorteil, dass Du die Daten komplett frisch in parseXML() erzeugen kannst. Nachteil: Du schleppst halt noch eine Klasse herum.

Code:
  public class MyDataContainer {
    public String xml_names[]=null;
    public String xml_states[]=null;
  }

  // in public MyDataContainer parseXML():

  MyDataContainer mdc = new MyDataContainer();
  mdc.xml_names = new String[]....;
  mdc.xml_states = new String[]...
  ..
  return mdc;

Variante 3:

Eine Map oä. zurückgeben und über irgendwelche Namen indizieren. Vorteil: geht immer, Nachteil: vertipper im Key können böse in einer NPE enden - daher sowas in Konstanten packen.

map.put("xml_names", xml_names);
....
String s[]=map.get("xml_names");

Variante 4: wenn Du die Arrays nur lokal brauchst, pfeife auf die Subroutine und klatsch das in den Main-Code rein.

Bernd
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
X Anagramm mit Strings und Methode Java Basics - Anfänger-Themen 53
javaerd Wie kann ich Brute Force Methode mit Strings erweitern Java Basics - Anfänger-Themen 1
S Suche Methode zum ausdrucken eines Strings Java Basics - Anfänger-Themen 13
Darth Simple Übergabe eines Strings an eine Methode Java Basics - Anfänger-Themen 3
T gibt es eine methode die einem alle Strings zurückliefert? Java Basics - Anfänger-Themen 7
H strings in eine andere methode übergeben? Java Basics - Anfänger-Themen 6
G Strings einer methode übergeben Java Basics - Anfänger-Themen 4
W Gleichzeitiges ersetzen mehrerer Strings Java Basics - Anfänger-Themen 7
R Datentypen Das Verhalten von Strings als Datentypen Java Basics - Anfänger-Themen 7
N Nachkommastellen von Strings Java Basics - Anfänger-Themen 3
T Strings unveränderlich???? Java Basics - Anfänger-Themen 22
B Alle Strings bis zu einer Maimallänge aufzählen, die Bedingung erfüllen Java Basics - Anfänger-Themen 13
S Die durchschnittliche Länge der Strings Java Basics - Anfänger-Themen 11
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
sserio StringBuilder und Strings Java Basics - Anfänger-Themen 8
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
N Strings verpflechten Java Basics - Anfänger-Themen 4
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
L Strings aneinanderhängen Java Basics - Anfänger-Themen 2
M Strings vergleichen Java Basics - Anfänger-Themen 10
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
C Ternärer Operator mit Strings Java Basics - Anfänger-Themen 3
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
P Verketten, Aneinanderreihen von Strings Java Basics - Anfänger-Themen 2
M Strings mit gerader und ungerader Länge ausgeben Java Basics - Anfänger-Themen 10
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
W Strings und das parsen Java Basics - Anfänger-Themen 8
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
D Vergleichen von Strings Java Basics - Anfänger-Themen 6
M Konkatenation von zwei Strings Java Basics - Anfänger-Themen 6
J Abbruchbedingung in Schleife/ Untersuchung von Strings Java Basics - Anfänger-Themen 2
S Buchstaben in Großbuchstaben (Strings) Java Basics - Anfänger-Themen 5
P geschachtelte Schleife mit Strings Java Basics - Anfänger-Themen 2
P Strings mit der Axt zerteilen Java Basics - Anfänger-Themen 7
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
K Strings hochzählen Java Basics - Anfänger-Themen 20
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
B Frage zu: String... strings -> Ungleiche Anzahl an Parameter? Java Basics - Anfänger-Themen 4
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
T Probleme mit Strings Java Basics - Anfänger-Themen 6
J Unveränderbarkeit von Strings Java Basics - Anfänger-Themen 3
O Klammerung bei Strings Java Basics - Anfänger-Themen 10
A Liste aus drei Strings erstellen Java Basics - Anfänger-Themen 5
N Zwei Strings mit "==" vergleichen warum TRUE Java Basics - Anfänger-Themen 2
G Teil(e) eines Strings entfernen wenn spezifische Zeichen (< & >) vorkommen Java Basics - Anfänger-Themen 5
D ergebnis.matches("[1-9]?[0-9].[0-9][0-9]?") ein teil eines größeren Strings Java Basics - Anfänger-Themen 12
J Breite eines Strings bestimmen Java Basics - Anfänger-Themen 4
D Zwei Strings sind gleich bei if aber nicht true Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
J Strings sind gleich werden aber ungleich ausgewertet Java Basics - Anfänger-Themen 2
N Vergleich von Strings schlägt fehl.. Java Basics - Anfänger-Themen 5
B 4 Strings, Anfangsbuchstaben muss unterschiedlich sein Java Basics - Anfänger-Themen 12
P Strings in String Array schreiben Java Basics - Anfänger-Themen 13
J Input/Output Strings aneinander reihen mit while schleife Java Basics - Anfänger-Themen 25
B mir nur die Gesamtzahl von einzigartigen Strings aus Array ausgeben lassen Java Basics - Anfänger-Themen 5
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
F Maximale Länge eines Strings Java Basics - Anfänger-Themen 5
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
Jinnai4 Strings ersetzen Java Basics - Anfänger-Themen 9
R Übergeben eines Array Strings an einen Spinner Java Basics - Anfänger-Themen 4
L Rekursiv zwei Strings vergleichen Java Basics - Anfänger-Themen 3
L Prüfe, ob die im String Array enthaltenen Strings aufsteigend sind. Java Basics - Anfänger-Themen 19
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
C 2 Strings Java Basics - Anfänger-Themen 15
T befehle unterschiedlicher anzahl an strings wiedergeben Java Basics - Anfänger-Themen 2
JavaNewbie2.0 Strings in andere Klassen importieren. Java Basics - Anfänger-Themen 2
D BlueJ Java: Strings voneinander trennen Java Basics - Anfänger-Themen 11
R Erste Schritte Strings "einrücken" Java Basics - Anfänger-Themen 3
Yamie ArrayList<Object> als Liste von Strings ausgeben? Java Basics - Anfänger-Themen 15
B gemeinsames Vorkommen der charactere von 2 Strings als String zurückgeben Java Basics - Anfänger-Themen 5
R Teilinhalt eines Strings testen Java Basics - Anfänger-Themen 10
H Erste Schritte JTree: Instanzen einer Klasse speichern oder Namen/Strings... Java Basics - Anfänger-Themen 4
L Werte von Strings ? Java Basics - Anfänger-Themen 1
L Strings und Arrays - Expand Java Basics - Anfänger-Themen 12
I Schachbrett aus beliebigen Strings erstellen Java Basics - Anfänger-Themen 3
Syncopated Pandemonium Verketten von Strings funktioniert nicht Java Basics - Anfänger-Themen 4
F Wahrscheinlichkeit von Strings Java Basics - Anfänger-Themen 3
MiMa Splitten eines Strings Java Basics - Anfänger-Themen 5
T Hashfunktion für Strings Java Basics - Anfänger-Themen 3
C Zeilenumbruch für langes Strings Java Basics - Anfänger-Themen 2
J Variablen Strings mit Zeilenumbrüchen in neues Array Element Java Basics - Anfänger-Themen 1
T Datentypen compareTo() u. equals() bei Strings Java Basics - Anfänger-Themen 3
H Strings vergleichen & sortieren Java Basics - Anfänger-Themen 20
H Erste Schritte Längstes Wort eines Strings herausfinden Java Basics - Anfänger-Themen 7
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
G Strings mit Scanner (nextLine) einlesen Java Basics - Anfänger-Themen 7
T Strings ersetzen mit \ Java Basics - Anfänger-Themen 10
K Strings bearbeiten Java Basics - Anfänger-Themen 14
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben