Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Java: For-Schleife wird übersprungen

Frage Entwicklung Java

Mitglied: Gansterjo2

Gansterjo2 (Level 1) - Jetzt verbinden

08.08.2014 um 13:24 Uhr, 1534 Aufrufe, 10 Kommentare

Hallo zusammen

Ich habe wieder einmal ein Problem :-S

Ich wollte einen Rechner in Java programmieren, jedoch bleibe ich schon beim anfänglichen Problem hängen, dass aus mir schleierhaften Gründen die For-Schleife übersprungen wird.

Der Code sieht so aus:

01.
 
02.
import javax.swing.JOptionPane; 
03.
import javax.swing.JTextField; 
04.
  
05.
public class rechnercore { 
06.
	public static void main (String[]args){ 
07.
  
08.
		String rechnung; 
09.
  
10.
		for(rechnung = ""; rechnung == "exit"; System.exit(0)){ 
11.
  
12.
			JTextField eingabe = new JTextField();//Definition des Eingabefeldes 
13.
			JOptionPane pane = new JOptionPane(eingabe, JOptionPane.OK_OPTION); 
14.
  
15.
			pane.createDialog(null, "Rechner").setVisible(true); 
16.
  
17.
			//System.out.println("Eingabe: " + eingabe.getText());//Ausgabe-Text 
18.
  
19.
			rechnung = eingabe.getText();//Umfüllen der Eingabe von der grafischen Oberfläche in eine neue Variable 
20.
  
21.
			System.out.println("test" + rechnung); 
22.
  
23.
		}; 
24.
  
25.
  
26.
	}; 
27.
}; 
28.
 
Vielen Dank für die Hilfe

Gruss Gansterjo2
Mitglied: LordXearo
08.08.2014, aktualisiert um 13:28 Uhr
Hallo,

rechnung ist NULL und nicht "leer".

Viele Grüße

Xearo

Edit: Außerdem solltest du die Deklarationen vor die Schleife setzen.
Bitte warten ..
Mitglied: Gansterjo2
08.08.2014 um 13:43 Uhr
Hallo,

Vielen Dank für die zügige Antwort...

Ich verstehe aber noch nicht welche Deklaration du meinst, ich bin eben noch ein Neulig, was die Programmierung angeht...

Der Code wurde nun angepasst und sieht nun so aus:
01.
import javax.swing.JOptionPane; 
02.
import javax.swing.JTextField; 
03.
  
04.
public class rechnercore { 
05.
	public static void main (String[]args){ 
06.
  
07.
		String rechnung; 
08.
  
09.
		for(rechnung = null; rechnung == "exit"; System.exit(0)){ 
10.
  
11.
			JTextField eingabe = new JTextField();//Definition des Eingabefeldes 
12.
			JOptionPane pane = new JOptionPane(eingabe, JOptionPane.OK_OPTION); 
13.
  
14.
			pane.createDialog(null, "Rechner").setVisible(true); 
15.
  
16.
			//System.out.println("Eingabe: " + eingabe.getText());//Ausgabe-Text 
17.
  
18.
			rechnung = eingabe.getText();//Umfüllen der Eingabe von der grafischen Oberfläche in eine neue Variable 
19.
  
20.
			System.out.println("test" + rechnung); 
21.
  
22.
		}; 
23.
  
24.
  
25.
	}; 
26.
};
Gruss Gansterjo2
Bitte warten ..
Mitglied: LordXearo
08.08.2014 um 13:50 Uhr
Das System.exit(0) springt mir ja gerade erst ins Auge. Diese "Schleife" ergibt nicht wirklich sein. Sobald die einmal durchlaufen ist, schließt sich dein Programm.

Du solltest dann damit beginnen, die Grundlagen zu lernen.
Bitte warten ..
Mitglied: Gansterjo2
08.08.2014 um 14:05 Uhr
Das System.exit(0) hab ich mit Absicht gesetzt. denn so wie ich die Syntax für die For-Schleife verstanden habe sollte das (aus meiner Sicht) korrekt sein.

for(Typ Variable = Wert; Bedingung; Update)
{

};

Sprich, sobald die Bedingung eintrifft sollte das Programm beendet werden... jedoch kann ja die Bedingung nie eintreffen, da gar kein Fenster erscheint bei dem ich die Variable setzen könnte.

Oder bist du da ganz anderer Meinung?
Bitte warten ..
Mitglied: LordXearo
LÖSUNG 08.08.2014, aktualisiert 12.08.2014
Achso, dass soll eine Art Endlosschleife sein. Die soll solange laufen bis du deine Eingabe getätigt hast. Für eine grafische oberfläche fehlt da auch noch einiges.

Ein Frame mit einen Layout-Manager. Da braucht man solche spielereien wie diese Schleife nicht. Das ganze sollte nachdem "MVC Prinzip" gemacht werden. Oder zu mindest einen Controller und eine View.

Anbei mal was aus alten Projekten:

Klasse controller
01.
package Fenster; 
02.
 
03.
import java.awt.*; 
04.
 
05.
public class Controller implements ActionListener, WindowListener,MouseListener,KeyListener{ 
06.
	view myView; 
07.
	boolean buttonlinks=true; 
08.
	 
09.
	public Controller() { //Konstruktor 
10.
		myView = new view(); 
11.
		myView.Change.addActionListener(this); 
12.
		myView.Change.addMouseListener(this); 
13.
		myView.Ende.addActionListener(this); 
14.
		myView.myFenster.addWindowListener(this); 
15.
16.
	public void actionPerformed(ActionEvent e){ 
17.
		if(e.getActionCommand().equals("Change")){ 
18.
			myView.myFenster.setTitle(JOptionPane.showInputDialog("Titel?")); 
19.
			 
20.
21.
		if(e.getActionCommand().equals("Ende")){ 
22.
			System.exit(0); 
23.
24.
25.
	public void windowActivated(WindowEvent arg0) { 
26.
		// TODO Auto-generated method stub	 
27.
28.
	public void windowClosed(WindowEvent arg0) { 
29.
			 
30.
31.
	public void windowClosing(WindowEvent e) { 
32.
		System.exit(0);		 
33.
34.
	public void windowDeactivated(WindowEvent e) { 
35.
		// TODO Auto-generated method stub	 
36.
37.
	public void windowDeiconified(WindowEvent arg0) { 
38.
		// TODO Auto-generated method stub	 
39.
40.
	public void windowIconified(WindowEvent arg0) { 
41.
		// TODO Auto-generated method stub	 
42.
43.
	public void windowOpened(WindowEvent arg0) { 
44.
		// TODO Auto-generated method stub	 
45.
46.
	public static void main(String[] args) { 
47.
		new Controller(); 
48.
49.
	public void mouseClicked(MouseEvent arg0) { 
50.
		// TODO Auto-generated method stub	 
51.
52.
	public void mouseEntered(MouseEvent arg0) { 
53.
		if(buttonlinks==true){ 
54.
		myView.Change.setBounds(300,100,50,50); 
55.
		buttonlinks=false; 
56.
57.
		else if(buttonlinks==false){ 
58.
			myView.Change.setBounds(50,100,50,50); 
59.
			buttonlinks=true; 
60.
61.
62.
	public void mouseExited(MouseEvent arg0) { 
63.
		// TODO Auto-generated method stub	 
64.
65.
	public void mousePressed(MouseEvent arg0) { 
66.
		// TODO Auto-generated method stub	 
67.
68.
	public void mouseReleased(MouseEvent arg0) { 
69.
		// TODO Auto-generated method stub	 
70.
71.
	public void keyPressed(KeyEvent arg0) { 
72.
		// TODO Auto-generated method stub	 
73.
74.
	public void keyReleased(KeyEvent arg0) { 
75.
		// TODO Auto-generated method stub 
76.
77.
	public void keyTyped(KeyEvent arg0) { 
78.
		// TODO Auto-generated method stub 
79.
80.
 
81.
}
Klasse view:
01.
package Fenster; 
02.
 
03.
import java.awt.Button; 
04.
import java.awt.FlowLayout; 
05.
import java.awt.Frame; 
06.
 
07.
public class view { 
08.
	Frame myFenster  = new Frame(); 
09.
	Button Change = new Button("Change"); 
10.
	Button Ende = new Button("Ende"); 
11.
	public view() { 
12.
		 
13.
		myFenster.setTitle ("Meine erste Applikation"); 
14.
		myFenster.setLayout(new FlowLayout()); 
15.
		myFenster.setSize(400,200); 
16.
				 
17.
		myFenster.add(Change); 
18.
		myFenster.add(Ende); 
19.
		myFenster.setVisible(true);	 
20.
21.
}
Bitte warten ..
Mitglied: Gansterjo2
08.08.2014 um 14:33 Uhr
Boa, Vielen Dank

Wenn ich mir die Quellcodes anschaue sehe ich, dass du die awt-Bibliothek importierst.

demfall werde ich den Quellcode ummodellieren, dass er awt Konform ist.

Gruss Gansterjo2
Bitte warten ..
Mitglied: LordXearo
08.08.2014 um 14:36 Uhr
Ja, du kannst auch einfach swing bzw. JFrame (JButton,(..) ) nutzen. Wenn du die zwei Klassen in einem neuen Projekt anlegst, hast du jedenfalls schonmal ein lauffähiges Programm.

Gruß
Xearo
Bitte warten ..
Mitglied: Gansterjo2
08.08.2014 um 14:47 Uhr
Ich kann natürlich auch die For-Schleife auskommentieren und dann habe ich zwar ein Interface, jedoch ist das Problem, sobald ich dann den 'ok'-Knopf drücke, wird die Applikation beendet und nicht mehr weitergeführt...

Mit awt kann man aus meiner Sicht individuellere GUIs erstellen und die Funktionen der einzelnen Buttons besser definieren. Bis eine grafische Oberfläche steht geht es einfach länger, ist aber kein Problem, ich habe alle Zeit der Welt

Gruss Gansterjo2
Bitte warten ..
Mitglied: LordXearo
08.08.2014 um 14:54 Uhr
Zitat von Gansterjo2:

Ich kann natürlich auch die For-Schleife auskommentieren und dann habe ich zwar ein Interface, jedoch ist das Problem, sobald
ich dann den 'ok'-Knopf drücke, wird die Applikation beendet und nicht mehr weitergeführt...


Das liegt daran, dass deine main-methode danach zu ende ist. In meinem Programm, erzeuge ich ein objekt vom controller und im controller ein objekt von der Klasse view. Solange die objekte nicht vernichtet werden, oder das Programm nirgendwo in ein System.Exit geht, läuft es weiter.
Bitte warten ..
Mitglied: Gansterjo2
10.08.2014 um 12:52 Uhr
Hey LordXearo

Darf ich bei Fragen in Bezug auf AWT auf dich zukommen?

Gruss Gansterjo2
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst CMD: icacls in for-Schleife (2)

Frage von Lowrider614 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Problem bei einer For Schleife (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Batch & Shell
gelöst For Schleife kaputt? (5)

Frage von Peter32 zum Thema Batch & Shell ...

Batch & Shell
Batch: Variable Expansion in einer FOR-Schleife (9)

Frage von .Sessl zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (22)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...