- Akku Tests und Balkonkraftwerk Speicher         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 38 von 38

Thema: Java Server/Plugin Manager

  1. #31
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.08.2004
    Ort
    Bremen
    Alter
    34
    Beiträge
    102
    Anzeige

    Praxistest und DIY Projekte
    Hi.

    Kann mir jemand sagen, wo hier eine NullPointerException auftritt:

    Code:
    public class Array
    {
    	public static void main(String args[])
    	{
    		String s[] = new String[20];
    		String name = "a";
    		
    		s[0] = "b";
    		s[1] = "c";
    		s[2] = "d";
    		s[3] = "e";
    		s[4] = "d";
    		s[5] = "f";
    		s[6] = "g";
    		s[7] = "h";
    		s[9] = "i";
    		
    		byte i = 0;
    		while(s[i].equals(name) == false && i < s.length)
    			i++;
    		
    		if(s[i].equals(name) == true)
    			System.out.println(i);
    		else
    			System.out.println("-1");
    	}
    }
    Wäre nett. Also Eclipse sagt in Zeile 19 also bei der while-Schleife. Aber ich versteh nicht warum? Wenn es keine Übereinstimmung in dem Array gibt sollte er die Schleife doch einfach beenden?

    Gruß, Jan.
    irOS - independent robot operating system
    www.ir-os.de

  2. #32
    Neuer Benutzer Öfters hier
    Registriert seit
    14.12.2004
    Beiträge
    9
    Hallo,

    die while-Schleife wird verlassen, weil irgendwann i==s.length, also 10, ist.
    In der nächsten Zeile greifst du dann auf s[10] zu.
    Das sollte aber eine OutOfBoundsException und keine NullPointerException werfen. Der eigentliche Fehler wird daher wohl sein, dass du s[8] nicht initialisierst.

    Gruß, Dirk

  3. #33
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.08.2004
    Ort
    Bremen
    Alter
    34
    Beiträge
    102
    Hi.

    Geht dann zur Lösung der NullPointerException folgendes:
    Code:
    byte i = 0;
    while(s[i] != null && s[i].equals(name) == false && i < (s.length - 1))
    	i++;
    		
    if(s[i] != null && s[i].equals(name) == true)
    	System.out.println(i);
    else
    	System.out.println("-1");
    ?

    die while-Schleife wird verlassen, weil irgendwann i==s.length, also 10, ist.
    In der nächsten Zeile greifst du dann auf s[10] zu.
    Muss ich die Bedingung auf i < (s.length - 1) setzen oder einfach statt "i++" "++i" schreiben?

    Gruß, Jan.
    irOS - independent robot operating system
    www.ir-os.de

  4. #34
    Neuer Benutzer Öfters hier
    Registriert seit
    14.12.2004
    Beiträge
    9
    Deine Lösung für die NullPointerException sollte funktionieren, ist aber irgendwie nicht gerade schön.
    Bei der letzten Bedingung könntest du tatsächlich mit length-1 arbeiten. Ich würde den ganzen Block aber irgendwie anders schreiben.
    Zum Beispiel mit einer for-Schleife:

    Code:
     
    public class Array
    {
       public static void main(String args[])
       {
          String s[] = new String[20];
          String name = "a";
          
          s[0] = "b";
          s[1] = "c";
          s[2] = "d";
          s[3] = "e";
          s[4] = "d";
          s[5] = "f";
          s[6] = "g";
          s[7] = "h";
          s[8] = "i";
          s[9] = "j";
          
           int i=0;
    
          int foundAt = -1;
    
          for( i=0; i<s.length(); i++)
          {
             if(s[i].equals(name))
             {
                 foundAt = i;
                 break;  //könnte man auch weglassen
             }
          }
          
         
         System.out.println(foundAt);
      
       }
    }
    Gruß, Dirk

  5. #35
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.08.2004
    Ort
    Bremen
    Alter
    34
    Beiträge
    102
    Hi.

    Stimmt, deine Lösung ist eleganter. Allerdings waren da die beiden Probleme von oben noch nicht weg, aber das hab ich noch gemacht. Danke!

    (Hier nochmal der aktuelle Code
    Code:
    public class Array
    {
    	public static void main(String args[])
    	{
    		String s[] = new String[10];
    		String name = "a";
    		
    		s[0] = "x";
    		s[1] = "g";
    		s[2] = "e";
    		s[3] = "b";
    		s[4] = "s";
    		s[5] = "i";
    		s[6] = "k";
    		s[7] = "r";
    		s[8] = "a";
    		s[9] = "p";
    		
    		byte index = -1;
    		
    		for(byte i = 0; i < (s.length - 1); i++)
    		{
    			if(s[i] != null && s[i].equals(name) == true)
    			{
    				index = i;
    				break;
    			}
    		}
    		
    		System.out.println(index);
    	}
    }
    Gruß, Jan.
    irOS - independent robot operating system
    www.ir-os.de

  6. #36
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.08.2004
    Ort
    Bremen
    Alter
    34
    Beiträge
    102
    Hi.

    Es ist soweit ich habe wieder mal ein Problem. Diesmal ist es keine richtiges Problem, aber ich habe eine Lösung und die ist eigendlich zu kompliziert. Ziel ist es einen Array zu bekommen, der genau so lang ist, wie ein anderer intialisierte Elemente hat und dann den neunen mit diesen Elementen zu füllen. Ich gehe im Beispiel davon aus, das nicht alle Elemente des Ursprungsarrays intialisiert sind und das diese nicht direkt hintereinander liegen. Hier ist meine Lösung, sie funktioniert, gefällt mir aber überhaupt nicht:
    Code:
    String value[] = new String[10];
    		value[2] = "df";
    		value[4] = "aasda";
    		value[0] = "ssed";
    		value[6] = "sdsds";
    		value[9] = "aewaas";
    		
    		int i = 0;
    		for(int x = 0; x < value.length; x++)
    			if(value[x] != null)
    				i++;
    		
    		String result[] = new String[i];
    		i = 0;
    		for(int x = 0; x < value.length; x++)
    			if(value[x] != null)
    				result[i++] = value[x];
    Ich glaube man könnte das einfacher mit einem Vector machen, aber ich hab keine Ahnung, wie die funktionieren. Vielleicht kann mir auch dazu jemand helfen?
    Danke schonmal!

    Gruß, Jan.
    irOS - independent robot operating system
    www.ir-os.de

  7. #37
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.08.2004
    Ort
    Bremen
    Alter
    34
    Beiträge
    102
    Hi.

    Ich habe mir das mit den Vectoren jetzt nochmal in der Java-Documentation durchgelesen, das ist echt die bessere Lösung.
    Ich hab dann gestern versucht die Arrays durch Vectoren zu ersetzen, aber dann hat Eclipse einen kritischen Hinweis rausgegeben, nämlich das ich die Vectoren irgendwie parametrisieren soll. Ich aber keine Ahnung wie und was überhaupt genau gemeint ist. Wenn ich das richtig verstehe soll ich eine Klasse von Vector erben lassen und die dann auf einen Dateitypen spezialiseren oder so... bin mir aber nicht sicher...
    Kann mir jemand sagen, was gemeint ist und wie das funktioniert? Danke.

    Gruß, Jan.
    irOS - independent robot operating system
    www.ir-os.de

  8. #38
    Gast
    Hallo Leute.

    Hätte da mal ein großes anliegen an Euch.
    Und zwar such ich die JAVA Files für den Java MSN Messi.
    Würde den gern in meine Website mit einbauen wollen.
    Könnt ihr mir da helfen ?

    Gruß Maik

Seite 4 von 4 ErsteErste ... 234

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen