NullPointerExeption

M

Mister003

Gast
Hallo

ich habe das Problem dass, das unten angeführte Programm einfach nicht richtig laufen will.
Es kommt immer der NullPointerExeption Fehler und ich habe keinen plan warum.

Hier das Programm (in Eclipse geschrieben):

Java:
import javax.swing.JOptionPane;


public class StringCGI {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		String text;
		text=JOptionPane.showInputDialog(null,"Text eingeben: ");
		int zaehler=0;
		
		for(int i=0;i<text.length();++i){
			if(text.charAt(i)=='='){
				++zaehler;
			}
		}
		
		
		String[] sFeld=new String[zaehler];
		String[] sWert=new String[zaehler];
		String[] hilfe=new String[zaehler*2];
		String[] hilfe2=new String[zaehler*2];
		
		hilfe=text.split("&");
		int zuschuss=0;
		
		for(int i=0;i<zaehler;++i){
			if(i<2){
				hilfe2[i]=hilfe[i];
			}
			else if(i>1){
				if(i%2!=0){
					hilfe2[i+zuschuss]=hilfe[i];
				}
				else{
					zuschuss=zuschuss-1;
				}
			}
		}
		
		for(int i=0;i<zaehler;++i){
			hilfe=hilfe2[i].split("=");
			sFeld[i]=hilfe[0];
			sWert[i]=hilfe[1];
		}
		
		for(int i=0;i<zaehler;++i){
			System.out.println("Feld"+(i+1)+":"+" "+sFeld[i]);
			System.out.println("Wert"+(i+1)+":"+" "+sWert[i]);
		}
		
		
	}

}
 
G

Gast2

Gast
Und wellche Zeile ist das in deinem geposteten Code?
Zeile 42 wäre hier
Code:
}
;)

EDIT:
Habs grad mal laufen lassen, ich kann da kein Problem erkennen.
 
Zuletzt bearbeitet von einem Moderator:
M

Mister004

Gast
ohh sorry

in dem ist es zeile 45

übrigens die Eingabe sollte so aussehen: vorname=max&nachname=mustermann&tel=...
und die ausgabe
Feld1: vorname
Wert1: max
Feld2: nachname
Wert2: mustermann
....
 
M

Mister004

Gast
schreib als text mal vorname=max&nachname=mustermann&tel=0662 rein und dann wird es nicht funken
 

Thief

Bekanntes Mitglied
Also n param-Extractor kann auch deutlich besser geschrieben sein.
Ausserdem hast du n paar unlogische Stellen, z.B.

Java:
for(int i=0;i<text.length();++i){
            if(text.charAt(i)=='='){
                ++zaehler;
            }
        }


        String[] hilfe=new String[zaehler*2];
        
        hilfe=text.split("&");

erst erstellst du einen String[] hilfe mit x*2, danach killst du den gleich wieder und erstellst
einen String[] mit x (bei der Annahme dass die Anzahl an & gleich der Anzahl an = ist.
 

Thief

Bekanntes Mitglied
Vielleicht n klein wenig besseres vorgehen. DU splittest den ganzen Query nach &. danach hast du einen
String-Array mit der Form [name=vorname][nachname=lulu] etc..
dann gehst du diesen Array durch, und suchst di position des = Zeichen. ist dies != -1, dann ist dein
param substring 0,pos und dein wert substring pos+1, ende

wird das = zeichen nicht gefunden, dann überspring das teil, weil dann ist was falsch.
 
G

Gast2

Gast
Wie gesagt, der Code ist wirklich etwas durcheinander...

Java:
    public static void main(String[] args) {

        String text;
        text=JOptionPane.showInputDialog(null,"Text eingeben: ");

        String[] hilfe=text.split("&");

        String[] sFeld = new String[hilfe.length];
        String[] sWert = new String[hilfe.length];

        for(int i = 0; i < hilfe.length; i++ ){
            String[] tmp = hilfe[i].split("=");
            sFeld[i]=tmp[0];
            sWert[i]=tmp[1];
        }

        for(int i = 0;i < sFeld.length; i++){
            System.out.println("Feld"+(i+1)+":"+" "+sFeld[i]);
            System.out.println("Wert"+(i+1)+":"+" "+sWert[i]);
        }
    }
Du solltest allerdings vorher noch validieren ob der eingegebene Text gültig ist. Sonst fliegen Exceptions.
 
M

Mister004

Gast
danke für die Hilfe

ich hab das so komisch geschrieben weil ich eine falsch Vorstellung davon hatte wie eclipse einen String splitet
 

Ähnliche Java Themen

Neue Themen


Oben