if (true) weiter gehts.. else nix da..

der Prof

Mitglied
Hallo,

Hab mich gerade erst registriert und freue mich dabei zu sein..
Ich vermute und hoffe wir werden uns in der nächsten zeit gut verstehen...


folgendes problem:

Java:
import java.io.IOException;
import javax.swing.*;

public class Login extends JPanel {
	
	public Login() throws IOException {
		Root myRoot;
		myRoot = new Root();
		if ( (( Root ) myRoot).pass() ) {}
		return;
	}
	
	public static void main( String[] args ) throws IOException {
		JFrame frame = new JFrame( "Programm" );
		frame.getContentPane().add( new Login() );
		frame.pack();
		frame.setVisible( true );
		frame.setLocation( 320, 240 );
		frame.setSize( 640, 480 );
		frame.setDefaultCloseOperation(
				JFrame.EXIT_ON_CLOSE );
		}
	}

und das hier ist unser Freund "Root"
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Root 
{
	public boolean pass() throws IOException {
		boolean  nameExact = false, passExact = false;
		String BenutzerNameEingabe, BenutzerPassEingabe, Benutzername = "prof", Passwort = "123";
		
		BufferedReader name = new BufferedReader (new InputStreamReader ( System.in ));
		System.out.print("Root login: ");
		BenutzerNameEingabe = name.readLine();
		
		BufferedReader pass = new BufferedReader (new InputStreamReader ( System.in ));
		System.out.print("Passwort: ");
		BenutzerPassEingabe = pass.readLine();

		if( Benutzername.equals( BenutzerNameEingabe )) {
			nameExact = true;
			}
		if( Passwort.equals( BenutzerPassEingabe )) {
			passExact = true;
			}
		if (passExact & nameExact)
			System.out.print("Richtig");
		else
			System.err.print("Falsch :-)");
		{
		return false;
		}
	}
}

Wenn beide Eingaben übereinstimmen soll die main methode der Klasse Login ausgeführt werden andernfalls "Exit"

Hab ich das überhaupt richtig formuliert?.. wie auch immer.. Ich brauche eure Hilfe bitte

den ganzen Tag schon am schreiben ohne Erfolg! Bitte nicht zuviel verraten

Danke im vorraus!

MfG

P.S: Entschuldigung für die Rechtschreibfehler!
 
Zuletzt bearbeitet:
Du hättest ja mal schreiben können, was überhaupt dein Problem ist.

Wieso ist Root ein JPanel, ließt aber von stdin das Passwort?
wenn du prüfen willst, ob zwei Aussagen zutreffen, nimmst du nicht & sondern &&
if( a && b )

das Konstrukt:
Code:
if( bla.equals( muh ) )
  x = true;
ist auch etwas doppelt-gemoppelt. Gesprochen wäre das etwa:
Wenn der vergleich, ob das Auto blau ist, wahr ergibt, dann setzte die Variable bla = wahr, sonnst nicht.
Du könntest es einfacher haben wenn du schreibst: x = bla.equals( muh ); ... ohne if.
Und du könntest dir Variablen sparen indem du:
if( a.equals( b ) && c.equals( d ) ) { .... } machen würdest.

Wieso schreibst du: { return false; } ? Meintest du else { System.out.prinltn( ... ); return false; }
Die pass() Funktion gibt jetzt immer false zurück.
 
ja danke für die hilfe

Java:
import java.io.IOException;
import javax.swing.*;

public class Login extends JPanel {
	
	public Login() throws IOException {
		return;
	}
	
	public static void main( String[] args ) throws IOException {
		Root myRoot;
		myRoot = new Root();
		if ( myRoot.pass() ) {
		
		JFrame frame = new JFrame( "Programm" );
		frame.getContentPane().add( new Login() );
		frame.pack();
		frame.setVisible( true );
		frame.setLocation( 320, 240 );
		frame.setSize( 640, 480 );
		frame.setDefaultCloseOperation(
				JFrame.EXIT_ON_CLOSE );
		}
	}}
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Root {
	public boolean pass() throws IOException {
		boolean nameExact = false, passExact = false;
		String BenutzerNameEingabe, BenutzerPassEingabe, Benutzername = "prof", Passwort = "123";

		BufferedReader name = new BufferedReader(new InputStreamReader(
				System.in));
		System.out.print("Root login: ");
		BenutzerNameEingabe = name.readLine();

		BufferedReader pass = new BufferedReader(new InputStreamReader(
				System.in));
		System.out.print("Passwort: ");
		BenutzerPassEingabe = pass.readLine();

		if (Benutzername.equals(BenutzerNameEingabe)) {
			nameExact = true;
		}
		if (Passwort.equals(BenutzerPassEingabe)) {
			passExact = true;
		}
		
		boolean loginOk = false;
		if (passExact & nameExact) {
			System.out.print("Richtig");
			loginOk = true;
		} else {
			System.err.print("Falsch");
			loginOk = false;
		}
		return loginOk;

	}
}
 
Zuletzt bearbeitet:
die frage war was ich schreiben muss damit bei falscher passwort eingabe die klasse "login" nicht startet aber das hab ich ja schon geschrieben..

danke für den Tipp mit den Code-Tags habs vorhin nicht gefunden.. ich denke das thema ist beendet ich hab mich nicht registriert um mich hier zu unterhalten.. lass mich bitte in ruhe

MfG
 
Hallo,

OnlyFoo hat gesagt.:
wenn du prüfen willst, ob zwei Aussagen zutreffen, nimmst du nicht & sondern &&
if( a && b )

Sicher kann man auch & benutzen. Der einzige Unterschied ist, dass bei && die zweite Bedingung nicht mehr überprüft wird, wenn die erste false ist.

MFG

zEriX
 
ich glaube das heisst man "könnte"

Java:
if (BenutzerNameEingabe.equals( Benutzername )) {
		nameExact = true;

bevor man die 2te eingabe einliest.. weglassen
 
Zuletzt bearbeitet:
Es geht einfacher wenn du es so machst.

Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Root {
public boolean pass() throws IOException {

String BenutzerNameEingabe, BenutzerPassEingabe, Benutzername = "prof", Passwort = "123";

BufferedReader name = new BufferedReader(new InputStreamReader(
System.in));
System.out.print("Root login: ");
BenutzerNameEingabe = name.readLine();

BufferedReader pass = new BufferedReader(new InputStreamReader(
System.in));
System.out.print("Passwort: ");
BenutzerPassEingabe = pass.readLine();



boolean loginOk = false;

loginOk = (Benutzername.equals(BenutzerNameEingabe) && Passwort.equals(BenutzerPassEingabe)) ;

return loginOk;

}
}

So hast du ein paar Anweisungen gespart und es ist etwas schneller.

zerix hat gesagt.:
Sicher kann man auch & benutzen. Der einzige Unterschied ist, dass bei && die zweite Bedingung nicht mehr überprüft wird, wenn die erste false ist.

Das heißt bei
Code:
if(a & b)
wird a und b überprüft, auch wenn a false ist und schon klar ist, dass dann bei a & b nicht mehr true rauskommen kann.

bei
Code:
if(a && b)
wird b nicht mehr überprüft, wenn a false ist.

Das ist besonders nützlich, wenn man erst ein Object überprüft ob es null ist und dann auf ein Object zugreift.

Beispiel
Code:
String x = null
if(x != null & x.equals("test")
// hier wird eine Exception geworfen

if(x != null && x.equals("test")
// hier wird keine Exception geworfen


MFG

zEriX
 
Zurück