AWT Netzwerkadresse generieren! Help?!

Status
Nicht offen für weitere Antworten.

DoxyMoxy

Mitglied
Hi ich brauch mal hilfe.
und zwar..... hier erstmal der ProgrammCode

Java:
package snmip;
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;


public class SNMIP extends JFrame implements ActionListener {
	
		private JTextField Pick1;
		private JTextField Pick2;
		private JTextField Pick3;
		private JTextField Pick4;
		private JButton Pick5;
		private JTextField Pick1_1;
		private JTextField Pick1_2;
		private JTextField Pick1_3;
		private JTextField Pick1_4;
		private JButton Pick6;
		private JTextField Pick2_1;
		private JLabel Pick2_2;
		private int[] IP;
		private int[] SNM;
				
		
		public SNMIP()
		{
			super("Test");
				JPanel Plate = new JPanel();
					Plate.setLayout(new FlowLayout(10,25,10));

		
					Pick1 = new JTextField("0",3);
					Pick2 = new JTextField("0",3);
					Pick3 = new JTextField("0",3);
					Pick4 = new JTextField("0",3);
						Pick5 = new JButton("IP-Prüfen");
					Pick1_1 = new JTextField(3);
					Pick1_2 = new JTextField(3);
					Pick1_3 = new JTextField(3);
					Pick1_4 = new JTextField(3);
						Pick6 = new JButton("SNM-Prüfen");
					Pick2_1 = new JTextField(5);
					Pick2_2 = new JLabel("Nr. des Subnetz");
		
		//API Java.Sun
					int[] IP = new int[4];
							IP[0]=Integer.parseInt(Pick1.getText());
							IP[1]=Integer.parseInt(Pick2.getText());
							IP[2]=Integer.parseInt(Pick3.getText());
							IP[3]=Integer.parseInt(Pick4.getText());
							
							Pick5.addActionListener(this);

							//SNM[0]=Integer.parseInt(Pick1_1.getText());
							//SNM[1]=Integer.parseInt(Pick1_2.getText());
							//SNM[2]=Integer.parseInt(Pick1_3.getText());
							//SNM[3]=Integer.parseInt(Pick1_4.getText());
								Pick6.addActionListener(this);
							//String Oktett2_2 = Pick2_1.getText();
		
					Plate.add(Pick1);
					Plate.add(Pick2);
					Plate.add(Pick3);
					Plate.add(Pick4);
						Plate.add(Pick5);
					Plate.add(Pick1_1);
					Plate.add(Pick1_2);
					Plate.add(Pick1_3);
					Plate.add(Pick1_4);
						Plate.add(Pick6);
					Plate.add(Pick2_1);
					Plate.add(Pick2_2);
						
			setContentPane(Plate);
		
		}
		public void actionPerformed(ActionEvent MyEvent)
		{
			Object MySource = MyEvent.getSource();
			
			if(MySource==Pick5){
				if(IP[0]<=127){
					JOptionPane.showMessageDialog(null, "Sie haben eine Klasse A Netzwerkadresse eingegeben!");
					Pick2.setText("0");
					Pick3.setText("0");
					Pick4.setText("0");
					
				}else{
					if((IP[0]>=128) && (IP[0]<=191)){
						JOptionPane.showMessageDialog(null, "Sie haben eine Klasse B Netzwerkadresse eingegeben!");
						Pick3.setText("0");
						Pick4.setText("0");
					}else{
						if((IP[0]>=192) && (IP[0]<=223)){
							JOptionPane.showMessageDialog(null, "Sie haben eine Klasse C Netzwerkadresse eingegeben!");
							Pick4.setText("0");
					
						}
					}
				}
			}
		}
		
		
	public static void main(String[] args) {
		
		
		SNMIP Rahmen = new SNMIP();
		Rahmen.setSize(400,300);
		Rahmen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Rahmen.setVisible(true);
	}

}

Er soll eigentlich wenn man auf den Button Pick5 (IP Prüfen) klickt die eingegebene IP prüfen ob es eine Klasse A oder Klasse B oder Klasse C NetzwerkIP ist (IP kann im Textfeld selber eingetragen werden) ... so alles klappt wunder bar... bis ich den Button drücke dann spuckt er den Fehler aus!

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at snmip.SNMIP.actionPerformed(SNMIP.java:82)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

so jetzt meine Frage...
wo genau liegt der fehler... könnte ihr mir da helfen!

Danke schonmal im vorraus!
 

Verjigorm

Top Contributor
int[] IP ist immer null
weil du weiter unten
int[] IP = new int[4];

schreibst, aber dies ist lokal!

=> IP = new int[4];

Oder direkt ganz zu Beginn initialisieren
 
Zuletzt bearbeitet:
G

Gast2

Gast
1.Man schreibt Variablen klein...
2.Vergleicht man Objekte mit equals
3.Steht doch in der Fehlermeldung(Zeile 82 ist null)...
 

DoxyMoxy

Mitglied
Jetzt habe ich noch ein weiteres Problem... und zwar bei dem "actionPerformed"...

Java:
public void actionPerformed(ActionEvent MyEvent)
        {
            Object MySource = MyEvent.getSource();
            
            if(MySource==Pick5){
                if(IP[0]<=127){
                    JOptionPane.showMessageDialog(null, "Sie haben eine Klasse A Netzwerkadresse eingegeben!");
                    Pick2.setText("0");
                    Pick3.setText("0");
                    Pick4.setText("0");
                    
                }else{
                    if((IP[0]>=128) && (IP[0]<=191)){
                        JOptionPane.showMessageDialog(null, "Sie haben eine Klasse B Netzwerkadresse eingegeben!");
                        Pick3.setText("0");
                        Pick4.setText("0");
                    }else{
                        if((IP[0]>=192) && (IP[0]<=223)){
                            JOptionPane.showMessageDialog(null, "Sie haben eine Klasse C Netzwerkadresse eingegeben!");
                            Pick4.setText("0");
                    
                        }
                    }
                }
            }
        }

wenn ich die Zahl eingeb die über (z.b.) 127 ist dann sagt er mir trozdem an das es eine Klasse A netzwerkadresse ist...
woran kann das liegen...?

hab schon überlegt... ob er mit den else Anweisungen nicht klar kommt...
 

Verjigorm

Top Contributor
weil du die Werte deiner IP-Segmente NICHT ausliest, wenn der Button gedrückt wird, sondern vorher, so sind alle 4 Teile mit 0 initialisiert ...

Ich würds so abändern:
Code:
        private void initIP()
        {
            IP[0]=Integer.parseInt(Pick1.getText());
            IP[1]=Integer.parseInt(Pick2.getText());
            IP[2]=Integer.parseInt(Pick3.getText());
            IP[3]=Integer.parseInt(Pick4.getText());
        }

und

Code:
        public void actionPerformed(ActionEvent MyEvent)
        {
            Object MySource = MyEvent.getSource();
            initIP();  //<------
            
            if(MySource==Pick5){
.....
 

DoxyMoxy

Mitglied
weil du die Werte deiner IP-Segmente NICHT ausliest, wenn der Button gedrückt wird, sondern vorher, so sind alle 4 Teile mit 0 initialisiert ...

Ich würds so abändern:
Code:
        private void initIP()
        {
            IP[0]=Integer.parseInt(Pick1.getText());
            IP[1]=Integer.parseInt(Pick2.getText());
            IP[2]=Integer.parseInt(Pick3.getText());
            IP[3]=Integer.parseInt(Pick4.getText());
        }

und

Code:
        public void actionPerformed(ActionEvent MyEvent)
        {
            Object MySource = MyEvent.getSource();
            initIP();  //<------
            
            if(MySource==Pick5){
.....
soo

Michael hatte recht mit seiner "0"
So jetzt funktioniert es...
erstmal :D
jetzt kommen noch die SNM (SubNetzMasken) und dann noch eine zuordnung der Subnetze... :eek:
 
G

Gast2

Gast
Variablen schreibt man immer noch klein...
Objekte(falls du weißt was das ist ;)) vergleicht man immer noch mit equals ;)
 

DoxyMoxy

Mitglied
naja Vaiablen muss man nicht klein schreiben...
und das Objekte mit equals verglichen werden weiß ich auch :D
aber da es bei dem vergleich keine Objekte (Strings) mehr sind weil sie umgeformd wurde mit Integer.parseInt(xyz)
kann ich auch den vergleich mit < = > <= >= machen :D

aber trozdem danke für den hinweis und für die Hilfe...
 
G

Gast2

Gast
naja Vaiablen muss man nicht klein schreiben...
und das Objekte mit equals verglichen werden weiß ich auch :D
aber da es bei dem vergleich keine Objekte (Strings) mehr sind weil sie umgeformd wurde mit Integer.parseInt(xyz)
kann ich auch den vergleich mit < = > <= >= machen :D

aber trozdem danke für den hinweis und für die Hilfe...
WTF??
Variablen muss man nicht klein schreiben alles klar.
So ist dein Code halt total schwer zu lesen.
Man sollte die Code Convention schon einhalten.
Wenn du ein Brief schreibst versuchts du auch die vorgegebenen Regeln zu beachten oder?!?!:rtfm:

Java:
if(MySource==Pick5)
das hier sind keine Objekte????
 

DoxyMoxy

Mitglied
hast schon recht mit dem Brief... ich könnte die Variablen klein schreiben.... aber es wurde so vom Lehrer vorgegeben...
möchte da jetzt nur ungern die sachen klein schreiben...

okay das ist ein Objekt... aber es ist nicht notwendig... das mit ein equals vergleich zu gestallten...

Java:
if(MySource==Pick5)
es funktioniert ja auch so...
ist jetzt vielleicht nicht die schönste Lösung aber es reicht :toll:
 

DoxyMoxy

Mitglied
ja ich weiß...
da ich das aber als vorlage bekommen habe wie schon mal gesagt... möchte ich da nicht viel ändern...
 

SebiB90

Top Contributor
Java:
if(MySource==Pick5)
das hier sind keine Objekte????
Also, generell sage ich auch Objekte mit equals vergleichen, aber in diesem Fall würde ich eher == machen, weil es hier auf die 'Identität' drauf ankommt.
Er will die Aktion ja ausführen, wenn es sich um das selbe und nicht um ein gleiches Textfeld handelt.
So auf Anhieb wüsste ich jetzt auch nicht, ob die equals Methode von TextField überschrieben wird oder nicht und bevor equals dann auch bei 2 Textfelder, in denen das gleiche drin steht, true zurück gibt, nehme ich lieber == .
 

DoxyMoxy

Mitglied
naja...
ähmm...
einfach zu erklären...
Klasse ca. 13 Mann... davon können 2 Leute Java... nicht perfekt aber sie können es einwenig... sie können damit arbeiten...

Einmal Ich und ein anderer Kollege...
soo

die Anderen... wissen genau soviel :bahnhof:

naja wenn der Lehrer jetzt noch von standards redet.... (tut er sehr oft) gibt es dann nur noch so welche gesichter in der Klasse ???:L???:L???:L???:L

so dann weiß man ungefair warum er das mit den Standarts doch sein lässt...
naja so die kleine zusammen fassung.. hoffe es genügt.. :D

so bin aber mit mein Programm fast fertig... es läuft es alles bis auf die Subnetz berechnung...

die muss aber irgendwie mit binärer umformung gemacht werden... dann müssen die einsen gezählt werden und dann das - 8 und dann wieder hoch zwei dann weiß man wie viele subnetze man zur verfügung hat oder soo.. naja muss selber erst noch mal nach fragen wat der Lehrer wollte...

???:L

PS:

Also, generell sage ich auch Objekte mit equals vergleichen, aber in diesem Fall würde ich eher == machen, weil es hier auf die 'Identität' drauf ankommt.
Er will die Aktion ja ausführen, wenn es sich um das selbe und nicht um ein gleiches Textfeld handelt.
So auf Anhieb wüsste ich jetzt auch nicht, ob die equals Methode von TextField überschrieben wird oder nicht und bevor equals dann auch bei 2 Textfelder, in denen das gleiche drin steht, true zurück gibt, nehme ich lieber == .

genau... so dachte ich es mir auch...
 

SebiB90

Top Contributor
so dann weiß man ungefair warum er das mit den Standarts doch sein lässt...
Nur weil er es sein lässt, musst du es nicht auch machen ;)
Ich empfehle dir die Ratschläge, die du hier bekommst, umzusetzen. Die Leute wissen in der Regel wovon sie reden^^
Durch die CodingConventions wird dein Code z.B. viel leserlicher, da es eine einheitliche Struktur gibt. Zudem tust du den Forenlesern ein gefallen. Es ist oft grausam und anstregend Code zu lesen, die gegen die Conventions verstößt.
 

DoxyMoxy

Mitglied
Ja ich weiß ... :D
ich nehme auch gerne ratschläge an deshalb wende ich mich ja an euch :D

hab auch schon alle Variablen geändert...

danke aber euch :D

muss jetzt erstmal selber durch blicken alles inruhe einrücken und und und :D

hier noch mal mein, dank euch, funktionsfähiges prog... aber erstmal nur bis zur SNM bestimmung :D

Java:
package snmip;
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;


public class SNMIP extends JFrame implements ActionListener {
	
		private JTextField TextField1;
		private JTextField TextField2;
		private JTextField TextField3;
		private JTextField TextField4;
		private JTextField TextField5;
		private JTextField TextField6;
		private JTextField TextField7;
		private JTextField TextField8;
		private JTextField TextField1_1;
		private JTextField TextField1_2;
		private JTextField TextField1_3;
		private JTextField TextField1_4;
		private JTextField TextField2_1;
		private JButton Button1;
		private JButton Button2;
		private JLabel Text11;
		private JLabel Text2_2;
		
			private int[] subnetzmaske;
			private int[] ip_adresse;
				
		// Konstruktor
		public SNMIP()
		{
			super("IP und SN/M Prüfer");
				JPanel Plate = new JPanel();
					Plate.setLayout(new FlowLayout(10,25,10));

		
			TextField1 = new JTextField("0",3);
			TextField2 = new JTextField("0",3);
			TextField3 = new JTextField("0",3);
			TextField4 = new JTextField("0",3);
				Button1 = new JButton("IP-Prüfen");				
			TextField5 = new JTextField("0",3);
			TextField6 = new JTextField("0",3);
			TextField7 = new JTextField("0",3);
			TextField8 = new JTextField("0",3);
				Text11 = new JLabel("Standard SNM");
				
			TextField1_1 = new JTextField("0",3);
			TextField1_2 = new JTextField("0",3);
			TextField1_3 = new JTextField("0",3);
			TextField1_4 = new JTextField("0",3);
				Button2 = new JButton("SNM-Prüfen");
				
			TextField2_1 = new JTextField("0",5);
				Text2_2 = new JLabel("Nr. des Subnetz");
		
		//API Java.Sun							
							Button1.addActionListener(this);			
							Button2.addActionListener(this);
							
		//Text Felder und Buttons für die IP und Text Felder für die Standard Subnetzmaske
					Plate.add(TextField1);
					Plate.add(TextField2);
					Plate.add(TextField3);
					Plate.add(TextField4);
						Plate.add(Button1);
					Plate.add(TextField5);
					Plate.add(TextField6);
					Plate.add(TextField7);
					Plate.add(TextField8);
						Plate.add(Text11);
				
		//Text Felder und Button für die Subnetzmaske		
					Plate.add(TextField1_1);
					Plate.add(TextField1_2);
					Plate.add(TextField1_3);
					Plate.add(TextField1_4);
						Plate.add(Button2);
						
		//Text Feld für die SubnetzNr.		
					Plate.add(TextField2_1);
						Plate.add(Text2_2);
						
			setContentPane(Plate);
		}
		
		private void initip_adresse()
        {
			ip_adresse = new int [4];
			ip_adresse[0]=Integer.parseInt(TextField1.getText());
			ip_adresse[1]=Integer.parseInt(TextField2.getText());
			ip_adresse[2]=Integer.parseInt(TextField3.getText());
			ip_adresse[3]=Integer.parseInt(TextField4.getText());
        }
		
		private void initsubnetzmaske()
        {
			subnetzmaske = new int [4];
			subnetzmaske[0]=Integer.parseInt(TextField1_1.getText());
			subnetzmaske[1]=Integer.parseInt(TextField1_2.getText());
			subnetzmaske[2]=Integer.parseInt(TextField1_3.getText());
			subnetzmaske[3]=Integer.parseInt(TextField1_4.getText());
        }
		
		public void actionPerformed(ActionEvent MyEvent)
		{
			Object MySource = MyEvent.getSource();
				initip_adresse();
				initsubnetzmaske();
			
			if(MySource==Button1){
				if((ip_adresse[0]>0) && (ip_adresse[0]<=127))
				{
					JOptionPane.showMessageDialog(null, "Sie haben eine Klasse A Netzwerkadresse eingegeben!");
					TextField2.setText("0");
					TextField3.setText("0");
					TextField4.setText("0");
					TextField5.setText("255");
					TextField6.setText("0");
					TextField7.setText("0");
					TextField8.setText("0");
					
                }else{
                    if((ip_adresse[0]>=128) && (ip_adresse[0]<=191))
                    {
                        JOptionPane.showMessageDialog(null, "Sie haben eine Klasse B Netzwerkadresse eingegeben!");
                        TextField2.setText("1");
                        TextField3.setText("0");
                        TextField4.setText("0");
                        TextField5.setText("255");
                        TextField6.setText("255");
                        TextField7.setText("0");
                        TextField8.setText("0");
                        
                    }else{
                        if((ip_adresse[0]>=192) && (ip_adresse[0]<=223))
                        {
                            JOptionPane.showMessageDialog(null, "Sie haben eine Klasse C Netzwerkadresse eingegeben!");
                            TextField2.setText("1");
                            TextField3.setText("1");
                            TextField4.setText("0");
                            TextField5.setText("255");
                            TextField6.setText("255");
                            TextField7.setText("255");
                            TextField8.setText("0");
                    
                        }
                    }
                }
            }
			if(MySource==Button2){
				if((subnetzmaske[0]==255) && (subnetzmaske[1]<255) && (subnetzmaske[2]<255)&& (subnetzmaske[3]<255))
				{
					JOptionPane.showMessageDialog(null, "Sie haben eine Klasse A Subnetzmaske eingegeben!");

                }else{
                    if((subnetzmaske[0]==255) && (subnetzmaske[1]==255) && (subnetzmaske[2]<255)&& (subnetzmaske[3]<255))
                    {
                        JOptionPane.showMessageDialog(null, "Sie haben eine Klasse B Subnetzmaske eingegeben!");
                    
                    }else{
                        if((subnetzmaske[0]==255) && (subnetzmaske[1]==255) && (subnetzmaske[2]==255)&& (subnetzmaske[3]<255))
                        {
                            JOptionPane.showMessageDialog(null, "Sie haben eine Klasse C Subnetzmaske eingegeben!");
                        }
                    }
                }
			}
        }

	public static void main(String[] args) {		
		
		SNMIP Rahmen = new SNMIP();
		Rahmen.setSize(400,300);
		Rahmen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Rahmen.setVisible(true);
	}

}

ich hoffe es ist so zu euer zufriedenheit... mit kleinen Variablen und so :lol:
 
Zuletzt bearbeitet:

SebiB90

Top Contributor
Java:
		private JTextField TextField1;
		private JTextField TextField2;
		private JTextField TextField3;
		private JTextField TextField4;
		private JTextField TextField5;
		private JTextField TextField6;
		private JTextField TextField7;
		private JTextField TextField8;
		private JTextField TextField1_1;
		private JTextField TextField1_2;
		private JTextField TextField1_3;
		private JTextField TextField1_4;
		private JTextField TextField2_1;
		private JButton Button1;
		private JButton Button2;
		private JLabel Text11;
		private JLabel Text2_2;

ich hoffe es ist so zu euer zufriedenheit... mit kleinen Variablen und so :lol:
und was ist das da? ich seh nix von kleinen variablen. alle fangen mit großbuchstaben an von denen da oben^^
 
G

Gast2

Gast
Und vor allem so bezeichnend,dass man gleich weiß was gemeint ist ;)
 

HoaX

Top Contributor
Jup, bei den Variablennamen weiß jeder sofort was sich dahinter verbirgt.

Btw würde ich nicht die Quelle des Events abfragen sondern lieber das ActionCommand (vorher auch beim Button setzen).
 

Schandro

Top Contributor
Btw würde ich nicht die Quelle des Events abfragen sondern lieber das ActionCommand (vorher auch beim Button setzen).
Ich würde eher nen eigenen ActionListener machen anstatt immer das ActionCommand oder die Source vergleichen zu müssen. Ist auch übersichtlicher und man kann diesen auch an mehrere Buttons hängen, wenn die alle dasselbe tun sollen.
 

DoxyMoxy

Mitglied
Java:
private JTextField textfield1;
        private JTextField textfield2;
        private JTextField textfield3;
        private JTextField textfield4;
        private JTextField textfield5;
        private JTextField textfield6;
        private JTextField textfield7;
        private JTextField textfield8;
        private JTextField textfield1_1;
        private JTextField textfield1_2;
        private JTextField textfield1_3;
        private JTextField textfield1_4;
        private JTextField textfield2_1;
        private JButton button1;
        private JButton button2;
        private JLabel text11;
        private JLabel text2_2;

so hab es jetzt wirklich alles klein gemacht... :cool:

aber ich denk mal die schönste lösung das programm so zu schreiben wie ich es gemacht habe ist es alle male nicht!!
es gibt einfache und bessere lösungen zum Beispiel den Konstruktor zu verkleinern oder auch wie ihr schon sagtet die Source vergleiche... und und und...

ich bin erstmal zufrieden das ich ein Grundgerüst habe wo man mit arbeiten kann...

Aber keine Sorgen :D
ich denk mal spätestens am Freitag werde ich noch mal fragen müssen...
wegen der Subnetz Berechnung...
oder vielleicht auch nicht...

danke aber erstmal an alle!!
 

DoxyMoxy

Mitglied
Leutz ich hab mal eine Frage...

gibt es eine möglich keit das z.b.:

die einsen einer Binär zahl bis zur ersten null gezählt werden...

z.b.

11111111 11011100 00000000 00000001

es sollen nur die roten Zahlen gezählt werden

11111111 11011100 00000000 00000001

wie kann man das am besten umsetzen?

danke
 

Schandro

Top Contributor
Kommt drauf an in welchen Format die binärzahl gespeichert ist.

Beispiel wenn sie ein String ist:
Java:
String binary = "111111101101011101";
int cnt = 0;
for(int i=0;i<binary.length();++i){
	if(binary.charAt(i) != '1'){
		break;
	}
	++cnt;
}
System.out.println(cnt);
 

DoxyMoxy

Mitglied
naja...
es soll so ablaufen...

er soll aus dem vorprogramm aus den Arrays... subnetzmasken[ ]
die umformen in eine Binär zahl... bis dahin kein problem...
und dann eben nur die 1 zählen die vor der ersten 0 stehen!

dann die gezählte zahl soll dann wenn es eine Klasse A Subnetzmaske ist -8 gerechnet werden in einer Klasse B -16 und in einer Klasse C -24 dann soll die ausgerechnete Zahl
für den Exponent der Basis "2" genommen werden...

z.b 2 hoch 22 oder so...
 
Zuletzt bearbeitet:

DoxyMoxy

Mitglied
also meine idee war jetzt so...

erst wollte ich ein neues Array anlegen...
Java:
private int[] subnetz_dual;

dann eben die Zahlen von subnetzmaske[ ]
umformen in einen BinaryString...

weiß aber nicht ob das klappt...
Java:
private void initsubnetz_dual()
        {
            subnetz_dual = new int [4];
            subnetz_dual[0]=Integer.toBinaryString(subnetzmaske[0])
            subnetz_dual[1]=Integer.toBinaryString(subnetzmaske[1]);
            subnetz_dual[2]=Integer.toBinaryString(subnetzmaske[2]);
            subnetz_dual[3]=Integer.toBinaryString(subnetzmaske[3]);
        }

ist jetzt nur eine idee von mir...
 

DoxyMoxy

Mitglied
Java:
package snmip;
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;


public class SNMIP extends JFrame implements ActionListener {
	
		private JTextField textfield1;
		private JTextField textfield2;
		private JTextField textfield3;
		private JTextField textfield4;
		private JTextField textfield5;
		private JTextField textfield6;
		private JTextField textfield7;
		private JTextField textfield8;
		private JTextField textfield9;
		private JTextField textfield10;
		private JTextField textfield11;
		private JTextField textfield12;
		//private JTextField ersterhost;
		//private JTextField letzterhost;
		//private JTextField broadcast;
		//private JTextField subnetzm;
		private JTextField textfield1_1;
		private JTextField textfield1_2;
		private JTextField textfield1_3;
		private JTextField textfield1_4;
		private JTextField textfield2_1;
		private JButton button1;
		private JButton button2;
		private JLabel text11;
		private JLabel text2_2;
		private JLabel text12;
		//private JLabel ersterhost1;
		//private JLabel letzterhost1;
		//private JLabel broadcast1;
		//private JLabel subnetzm1;
		
			private int[] subnetzmaske;
			private int[] ip_adresse;
			private int[] SNM;
			
			private String subnetzmaske0;
			private String subnetzmaske1;
			private String subnetzmaske2;
			private String subnetzmaske3;
			
				
		
		public SNMIP()
		{
			super("IP und SN/M Prüfer");
				JPanel Plate = new JPanel();
					Plate.setLayout(new FlowLayout(10,25,10));

		
			textfield1 = new JTextField("0",3);
			textfield2 = new JTextField("0",3);
			textfield3 = new JTextField("0",3);
			textfield4 = new JTextField("0",3);
				button1 = new JButton("IP-Prüfen");				
			textfield5 = new JTextField("0",3);
			textfield6 = new JTextField("0",3);
			textfield7 = new JTextField("0",3);
			textfield8 = new JTextField("0",3);
				text11 = new JLabel("Standard SNM");
			textfield9 = new JTextField("0",3);
			textfield10 = new JTextField("0",3);
			textfield11 = new JTextField("0",3);
			textfield12 = new JTextField("0",3);
				text12 = new JLabel("NW_Adresse");
				
			textfield1_1 = new JTextField("0",3);
			textfield1_2 = new JTextField("0",3);
			textfield1_3 = new JTextField("0",3);
			textfield1_4 = new JTextField("0",3);
				button2 = new JButton("SNM-Prüfen");
				
			textfield2_1 = new JTextField("0",10);
				text2_2 = new JLabel("Nr. des Subnetz");
				
			/**ersterhost1 = new JLabel ("erster Host: ");
			ersterhost = new JTextField (20);
			letzterhost1 = new JLabel ("letzter Host: ");
			letzterhost = new JTextField (20);
			broadcast1 = new JLabel (" Broadcast : ");
			broadcast = new JTextField (20);
			subnetzm1 = new JLabel ("Subnetzma: ");
			subnetzm = new JTextField (20);*/
		
		
		//API Java.Sun							
							button1.addActionListener(this);			
							button2.addActionListener(this);
							
		//Text Felder und Buttons für die IP und Text Felder für die Standard Subnetzmaske
					Plate.add(textfield1);
					Plate.add(textfield2);
					Plate.add(textfield3);
					Plate.add(textfield4);
						Plate.add(button1);
					Plate.add(textfield5);
					Plate.add(textfield6);
					Plate.add(textfield7);
					Plate.add(textfield8);
						Plate.add(text11);
					Plate.add(textfield9);
					Plate.add(textfield10);
					Plate.add(textfield11);
					Plate.add(textfield12);
						Plate.add(text12);
				
		//Text Felder und Button für die Subnetzmaske		
					Plate.add(textfield1_1);
					Plate.add(textfield1_2);
					Plate.add(textfield1_3);
					Plate.add(textfield1_4);
						Plate.add(button2);
						
		//Text Feld für die SubnetzNr.		
					Plate.add(textfield2_1);
						Plate.add(text2_2);
						
					/**Plate.add(ersterhost1);
					Plate.add(ersterhost);
					Plate.add(letzterhost1);
					Plate.add(letzterhost);
					Plate.add(broadcast1);
					Plate.add(broadcast);
					Plate.add(subnetzm1);
					Plate.add(subnetzm);*/
					
				
						
			setContentPane(Plate);
		}
		
		//Array für die IP
		private void initip_adresse()
        {
			ip_adresse = new int [4];
			ip_adresse[0]=Integer.parseInt(textfield1.getText());
			ip_adresse[1]=Integer.parseInt(textfield2.getText());
			ip_adresse[2]=Integer.parseInt(textfield3.getText());
			ip_adresse[3]=Integer.parseInt(textfield4.getText());
        }
	
		//Array für die SNM
		private void initsubnetzmaske()
        {
			subnetzmaske = new int [4];
			SNM = new int[4];
			
			subnetzmaske[0]=Integer.parseInt(textfield1_1.getText());
			subnetzmaske0 = Integer.toBinaryString(subnetzmaske[0]);
			String subnetz0 = subnetzmaske0;
			int SNM0 = 0;
			for(int i=0;i<subnetz0.length();++i){
			    if(subnetz0.charAt(i) != '1'){
			        break;
			    }
			    ++SNM0;
			}
			System.out.println(SNM0);
			
			subnetzmaske[1]=Integer.parseInt(textfield1_2.getText());
			subnetzmaske1 = Integer.toBinaryString(subnetzmaske[1]);
			String subnetz1 = subnetzmaske1;
			int SNM1 = 0;
			for(int i=0;i<subnetz1.length();++i){
			    if(subnetz1.charAt(i) != '1'){
			        break;
			    }
			    ++SNM1;
			}
			System.out.println(SNM1);
			
			subnetzmaske[2]=Integer.parseInt(textfield1_3.getText());
			subnetzmaske2 = Integer.toBinaryString(subnetzmaske[2]);
			String subnetz2 = subnetzmaske2;
			int SNM2 = 0;
			for(int i=0;i<subnetz2.length();++i){
			    if(subnetz2.charAt(i) != '1'){
			        break;
			    }
			    ++SNM2;
			}
			System.out.println(SNM2);
			
			subnetzmaske[3]=Integer.parseInt(textfield1_4.getText());
			subnetzmaske3 = Integer.toBinaryString(subnetzmaske[3]);
			String subnetz3 = subnetzmaske3;
			int SNM3 = 0;
			for(int i=0;i<subnetz3.length();++i){
			    if(subnetz3.charAt(i) != '1'){
			        break;
			    }
			    ++SNM3;
			
			}
			System.out.println(SNM3);
		SNM[0] = SNM0;
		SNM[1] = SNM0+SNM1;
		SNM[2] = SNM0+SNM1+SNM2;
		SNM[3] = SNM0+SNM1+SNM2+SNM3;
		
		System.out.println(SNM[0]);
		System.out.println(SNM[1]);
		System.out.println(SNM[2]);
		System.out.println(SNM[3]);
		}
		
       
	
		public void actionPerformed(ActionEvent MyEvent)
		{
			Object MySource = MyEvent.getSource();
				initip_adresse();
				initsubnetzmaske();
			
			if(MySource==button1){
				if((ip_adresse[0]>0) && (ip_adresse[0]<=127)&& (ip_adresse[1]<=255)&& (ip_adresse[2]<=255)&& (ip_adresse[3]<=255))
				{
					JOptionPane.showMessageDialog(null, "Sie haben eine Klasse A Netzwerkadresse eingegeben!");
					textfield9.setText("10");
					textfield10.setText("0");
					textfield11.setText("0");
					textfield12.setText("0");
					textfield5.setText("255");
					textfield6.setText("0");
					textfield7.setText("0");
					textfield8.setText("0");
					
                }else{
                    if((ip_adresse[0]>=128) && (ip_adresse[0]<=191)&& (ip_adresse[1]<=255)&& (ip_adresse[2]<=255)&& (ip_adresse[3]<=255))
                    {
                        JOptionPane.showMessageDialog(null, "Sie haben eine Klasse B Netzwerkadresse eingegeben!");
                        textfield9.setText("172");
                        textfield10.setText("16");
    					textfield11.setText("0");
    					textfield12.setText("0");
    					textfield5.setText("255");
    					textfield6.setText("255");
    					textfield7.setText("0");
    					textfield8.setText("0");
                        
                    }else{
                        if((ip_adresse[0]>=192) && (ip_adresse[0]<=223) && (ip_adresse[1]<=255)&& (ip_adresse[2]<=255)&& (ip_adresse[3]<=255))
                        {
                            JOptionPane.showMessageDialog(null, "Sie haben eine Klasse C Netzwerkadresse eingegeben!");
                            textfield9.setText("192");
                            textfield10.setText("168");
        					textfield11.setText("1");
        					textfield12.setText("0");
        					textfield5.setText("255");
        					textfield6.setText("255");
        					textfield7.setText("255");
        					textfield8.setText("0");
                    
                        }else{
                        	JOptionPane.showMessageDialog(null,"!!UNGÜLTIGE EINGABE!!");
                        }
                    }
                }
            }
			if(MySource==button2){
				if((SNM[0]>8) && (SNM[3]<=30))
				{
					JOptionPane.showMessageDialog(null, "Sie haben eine Klasse A eingegeben!");

			}else{
				if((SNM[1]>16) && (SNM[3]<=30))
				{
					JOptionPane.showMessageDialog(null, "Sie haben eine Klasse B eingegeben!");

			}else{
				if((SNM[2]>24) && (SNM[3]<=30))
				{
					JOptionPane.showMessageDialog(null, "Sie haben eine Klasse C eingegeben!");
                   
				}
			}
		}
	}
}

	public static void main(String[] args) {		
		
		SNMIP Rahmen = new SNMIP();
		Rahmen.setSize(400,300);
		Rahmen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Rahmen.setVisible(true);
	}

}

Hi leute...
und zwar...

wenn ich auf den "button2" klicke passiert nichts... obwohl alles in der Konsole richtig ausgegeben wird...
woran kann das problem liegen...

es muss ja irgendwas an diesem Code liegen... aber ich sehe da nichts!

Java:
if(MySource==button2){
				if((SNM[0]>8) && (SNM[3]<=30))
				{
					JOptionPane.showMessageDialog(null, "Sie haben eine Klasse A eingegeben!");

			}else{
				if((SNM[1]>16) && (SNM[3]<=30))
				{
					JOptionPane.showMessageDialog(null, "Sie haben eine Klasse B eingegeben!");

			}else{
				if((SNM[2]>24) && (SNM[3]<=30))
				{
					JOptionPane.showMessageDialog(null, "Sie haben eine Klasse C eingegeben!");
                   
				}
			}
		}
	}
}

danke für eure hilfe!
 

Verjigorm

Top Contributor
Es kann doch nicht so schwer sein, einfach eine System.outs zu schreiben um zu schauen, was in SNM[0] und SNM[3] drinsteht und dementsprechend seine if/else-abfrage zu verfolgen

Es fehlt übrigends ein else-zweig, so als tipp
 

DoxyMoxy

Mitglied
Java:
  SNM[0] = SNM0;
        SNM[1] = SNM0+SNM1;
        SNM[2] = SNM0+SNM1+SNM2;
        SNM[3] = SNM0+SNM1+SNM2+SNM3;
        
        System.out.println(SNM[0]);
        System.out.println(SNM[1]);
        System.out.println(SNM[2]);
        System.out.println(SNM[3]);

hab ich hier doch gemacht und was steht drin genau das was drin stehen soll für SNM[0] = 8
und dann immer so weiter...

vielleicht liegt der Fehler an der else anweisung... ich werd mal gucken ...
danke
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H LayoutManager RPG Programmieren, eigenes Spielfeld grafisch generieren aus Tileset AWT, Swing, JavaFX & SWT 18
R Farbe zu einem Eckpunkt generieren AWT, Swing, JavaFX & SWT 2
S Aus XML Datei FXML generieren AWT, Swing, JavaFX & SWT 4
U Swing Buttons generieren AWT, Swing, JavaFX & SWT 19
A AWT Nach dem generieren von bildern verschwinden diese wieder AWT, Swing, JavaFX & SWT 9
1 ActionEvent generieren und an ActionListener weiterleiten AWT, Swing, JavaFX & SWT 12
L ID für GUI Elemente generieren AWT, Swing, JavaFX & SWT 11
S SWT Bei Auslösen eines Buttones ein Textfeld generieren AWT, Swing, JavaFX & SWT 2
M Dynamisches generieren und ausrichten von Komponenten AWT, Swing, JavaFX & SWT 11
N Bilder aus Infos generieren lassen. Welches Framework? AWT, Swing, JavaFX & SWT 8
X Video's aus JPG's oder BufferedImages generieren AWT, Swing, JavaFX & SWT 3
P Formular mit n-Textfeldern generieren AWT, Swing, JavaFX & SWT 7
O Fensterinhalt löschen und neu generieren AWT, Swing, JavaFX & SWT 2
G Mousecursor selber dynamisch generieren. AWT, Swing, JavaFX & SWT 6
F Bildleiste generieren AWT, Swing, JavaFX & SWT 2
A HELP: JFieldText dynamisch setzen -> langsam AWT, Swing, JavaFX & SWT 19
S Help on FX 2.x AWT, Swing, JavaFX & SWT 4
G Dynamic Help mit SWT/JFace AWT, Swing, JavaFX & SWT 5
D Zoom problem!!! (brauche screenshot...) plz help thx AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben