tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Kalstone
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
941
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Alex Großmann Alex Großmann ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    119
    Hiho!
    Ich gebe in einem Programm eine Start IP und eine End IP über einen String ein.
    Dann filter ich die "." raus und wandel das ganze in int um, damit die Zahlenwerte auch wirklich da sind...

    so!
    Nun mag ich eine Schleife erstellen die von der Start IP bis zur End IP hochzählt. Das ist ja noch easy! Aber jeder "Block", d.h. jeder Bereich in einer IP (also gibts 4, sind durch eben den "." getrennt) soll bis 255 gehen, dann auf 0 zurück gehen und im nächsten Block 1 hoch zählen, dies auch wiederum solang bis 255 oder eben End IP erreicht ist.... könnt Ihr mir da helfen? Wäre echt nett!
    Hier meine kläglichen Versuche:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    for (int i=a ;i <= a1; i++){                                
                    
                                                
                    for (int i1=b; i1 <= b1; i1++){
                        
                        
                        for (int i2=0; i2 <= 255; i2++ ){
                            
                            
                            for (int i3=0; i3 <= 255; i3++){
                            
                                
                                System.out.println(i + "." + i1 + "." + i2 + "." +i3);
                            
                                
                            }
                        }
                    }
                }
     

  2. #2
    SE Tutorials.de Gastzugang
    Dürften wir auch erfahren was du mit diesem Unsinn vorhast damit wir nicht umsonst unsere Zeit verschwenden ?
     

  3. #3
    Avatar von Kalstone
    Kalstone Kalstone ist offline Mitglied
    Registriert seit
    Dec 2009
    Ort
    Brandenburg (Brandenburg)
    Beiträge
    16
    Hi Alex,

    dein Ansatz ist schlimmer als wirrwar .
    Wenn du in einem Loop immer wieder den selben Check machen musst, bieten sich rekursive Methodenaufrufe an - zumal der Code auch kürzer und lesbarer wird (gestrippt würde ein 10-Zeiler rauskommen). Ich hab mal schnell was zusammengetippt was in den Grundzügen deinen Anforderungen entsprechen sollte. Exception im 2. Testcase ist gewollt, wenn du willst, kannst du die Zeilen ja noch um eine weitere Prüfung erweitern.
    Meine Lösung sieht jetzt so aus:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    package de.jeteo.tutorials.java.incip;
    import java.util.Arrays;
     
     
    public class IncIP {
     
        public static void main(String[] args) {
            // from m to n
            test(new int[] {192, 255, 254, 1}, new int[] {193, 0, 20, 255});
            // from m to end
            test(new int[] {255, 255, 254, 200}, new int[] {-1, -1, -1, -1});
        }
        
        static void test(int[] startIp, int[] endIp) {
            while (!Arrays.equals(startIp, endIp)) {
                System.out.println(startIp[0] + "." + startIp[1] + "." + startIp[2] + "." + startIp[3]);
                inc(startIp, 3);
            }
            System.out.println(startIp[0] + "." + startIp[1] + "." + startIp[2] + "." + startIp[3]);
        }
     
        static void inc(int[] ip, int idx) {
            if (ip[idx] < 255) {
                ip[idx]++;
            } else {
                ip[idx] = 0;
                inc(ip, --idx);
            }
        }
     
    }

    Melde dich wenn was nicht passen sollte .

    Grüße, K.
    Geändert von Kalstone (28.06.11 um 00:13 Uhr)
    Alex Großmann bedankt sich. 

  4. #4
    Alex Großmann Alex Großmann ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    119
    Einwandfrei! Danke dir
    Eine Frage noch, für was ist m to end? Wenn man das 1. Festlegt gehts perfekt (wie ich es brauche)!
    Hatte noch einen Ansatz mit while Schleifen aber hier ist das echt meisterhaft gelöst
     

Ähnliche Themen

  1. ASP & XML Bitte helft mir :(
    Von crazytom im Forum XML Technologien
    Antworten: 0
    Letzter Beitrag: 07.04.05, 01:40
  2. Helft mir bitte
    Von Freakfire im Forum Sonstige Grafik-Programme
    Antworten: 1
    Letzter Beitrag: 02.12.04, 20:42
  3. Helft mit!
    Von dune911 im Forum Smalltalk
    Antworten: 29
    Letzter Beitrag: 21.06.03, 20:41
  4. Bitte helft mir.....
    Von Anja im Forum HTML-Editoren
    Antworten: 13
    Letzter Beitrag: 30.04.03, 10:28
  5. flash 5 button wirrwar
    Von wazoo im Forum Flash Plattform
    Antworten: 10
    Letzter Beitrag: 06.12.02, 13:36