NullPointerExeption

  • Themenstarter Themenstarter Mister003
  • Beginndatum Beginndatum
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]);
		}
		
		
	}

}
 
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:
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
....
 
schreib als text mal vorname=max&nachname=mustermann&tel=0662 rein und dann wird es nicht funken
 
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.
 
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.
 
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.
 
danke für die Hilfe

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

Zurück
Oben