• 23.04.2024, 18:14
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Cyrus

Senior Member

Java, Suche nach bestimmter Deklaration

Mittwoch, 25. November 2009, 10:02

Guten Morgen Forum,
für meine Projektarbeit in der Berufsschule müssen wir 5 Programme mit Java erstellen, sind bis jetzt nur bei den Grundlagen. Zum Programm:
-Eine einfache If-Abfrage kombiniert mit einer While-Schleife
-Es geht einfach um das Passwort; "falsch": Bitte versuchen sie es erneut; "richtig": Gz, Passwort war richtig"

Mir geht es jetzt nur um die deklaration der beiden Variablen "Eingabe" und "Passwort", weil mit "int", "single" etc funktioniert es ja nicht, weil es geschriebene Buchstaben sind.

Hier mal das Programm, keine Ahnung ob es so läuft, es soll nur das Problem verdeutlichen:


import java.io.*;
// Beispiel einer while-Schleife, mit Passwortabfrage
class Passwort
{
public static void main (String[] args )
{
???int??? Eingabe="", Passwort="Jens" ; // initialisierung der Variablen
while (Eingabe<>Passwort) // mache solange Eingabe <>Passwort
{
System.out.println( "Das Passwort war leider falsch!");
System.out.println( "Bitte versuchen Sie es erneut");
{
if (Eingabe=Passwort) {
System.out.println( "Herzlichen Glückwunsch, das Passwort ist richtig!");
}
}

System.out.println( "Schleife beendet" );
}
}
}



Dankeschön schon mal im vorraus,
Cyrus

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Cyrus« (25. November 2009, 10:03)

Freitag, 27. November 2009, 18:37

:D

Das kommt davon, dass die Leute heutzutage gleich mit den Scriptspachen anfangen, anstatt erstmal die Grundlagen an einer richtigen Programmiersprache zu lernen...

Der Rest des Quelltextes ist auch des lesen wert... :thumbsup:

Gruß, Texx
We'll never stop living this way!

Freitag, 27. November 2009, 19:18

Gewöhne dir an, jede Variable in einer eigenen Zeile zu deklarieren oder gleich zu initialisieren, damit du sie einzeln auskommentieren kannst.

Der Vergleichsoperator `==` kann in Java (mangels Operator-Overloading?) nur für native Typen (int, float, boolean etc.) verwendet werden. Für Objekte, dessen Klassen on `Object` erben, muss mittels der Methode `equals()` verglichen werden. Das gilt für Integer, Float, Boolean und auch String.

Freitag, 27. November 2009, 23:17

Hi,

also ich habe mal die Aufgabenstellung mal so umgesetzt, dass ein lauffähiges Programm dabei rauskommt.

Quellcode

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
32
33
34
35
36
37
38
39
40
41
42
43
44
// Beispiel einer while-Schleife, mit Passwortabfrage

public class Passwort {

	/** 
	 * Liest eine Text von der Eingabe und gibt ihn zurück
	 * @return die von der Eingabe eingelesene Zahl
	 */
	public static String EingabeString() {
	
	  java.util.Scanner scanner = new java.util.Scanner(System.in);
	  return scanner.next();
	}

	public static void main (String[] args ) {
		
		// Deklaration und Initialisierung der Variablen
		String eingabe = "";
		String passwort = "Jens";
		boolean richtigesPasswort = true;
		
		// Do-While-Schleife für die Übereinstimmung der Passwortes.
		do {
		
			if (richtigesPasswort == false) {
			
				System.out.println ("Falsches Passwort!");
			}
			
			System.out.println ("Geben Sie bitte Ihr Passwort ein");
		
			// Einlesen der Eingabe mit der Methode EingabeString.
			eingabe = EingabeString();
			
			// Überprüfung Übereinstimmung
			richtigesPasswort = eingabe.equals(passwort);
		}
		
		while (richtigesPasswort == false); 
		
		System.out.println( "Herzlichen Glueckwunsch, das Passwort ist richtig!");
		System.out.println( "Schleife beendet" );
	}
}


Schau dir den Code mal genau an und überlege warum ich es so gecodet habe. Wenn du eine Frage hast dann frage. Es soll allerdings keine Abschreibe-Vorlage sein!


Gruß Max Payne

Samstag, 28. November 2009, 00:25

if (richtigesPasswort == false) {



ouch ;)
Gute work-live-balance ist, wenn man von seinem Privatleben erschöpfter ist als von der Arbeit.

Samstag, 28. November 2009, 00:41

Quellcode

1
if (!richtigesPasswort) {

? Hat mir mein Studium wenigstens ein klein wenig genutzt? xD

Zitat von »Lev«

ich frag mich ja wann die autoindustrie anfängt en used-look anzubieten :huh:

Sonntag, 29. November 2009, 18:50

Der Vergleichsoperator `==` kann in Java (mangels Operator-Overloading?) nur für native Typen (int, float, boolean etc.) verwendet werden. Für Objekte, dessen Klassen on `Object` erben, muss mittels der Methode `equals()` verglichen werden. Das gilt für Integer, Float, Boolean und auch String.


Naja,

== kann man auch mit Objekten benutzen. Da ist es aber kein "equals" sondern ein "same". Und das mit dem Operator-Overloading, wie man es beispielsweise von C(++) kennt, lassen wir mal. Das hat insgesammt wohl mehr geschadet als genutzt.

Gruß, Texx
We'll never stop living this way!

Sonntag, 29. November 2009, 19:28

if (richtigesPasswort == false) {



ouch ;)
Ich glaube einfach dass dies die am versändlichsten gewählte Methode ist. Wenn er das wüste, dann bräuchte er wohl gar keine Hilfe ;)



Gruß Max Payne

Sonntag, 6. Dezember 2009, 14:06

== kann man auch mit Objekten benutzen. Da ist es aber kein "equals" sondern ein "same".

Deswegen sagte ich auch "Vergleichsoperator" (und meinte dabei die im Namen enthaltene Gleichheit). Ist aber missverständlich, zugegeben. In jedem Fall will er hier aber die Gleichheit des Wertes ermitteln und nicht die der Identität des Objekts. Inbesondere in Java ist es ein häufiger Fehler, dass mittels `==` die Werte verglichen werden sollen - und ein durchaus nachvollziehbarer, müssen doch für die selbe Prüfung zwei verschiedene Wege (Operator vs. Methode) benutzt werden. Mir fällt auf Anhieb keine andere Sprache ein, die diese Schwäche besitzt (macht z.B. C# das besser?)

Und das mit dem Operator-Overloading, wie man es beispielsweise von C(++) kennt, lassen wir mal. Das hat insgesammt wohl mehr geschadet als genutzt.

Wie gut Operator Overloading funktionieren kann, sieht man in mehreren Sprachen von Perl über Ruby und Python bis Haskell. Ich finde es durchaus besser, Methoden mit besonderen Namen wie `__eq__` oder `__gt__` oder `__add__` zu implementieren und sie dann über (auch mit weniger Schreibarbeit verbundene) Standardoperatoren implizit aufzurufen, zumal es dadurch Anfängern nicht so leicht passiert, dass sie ihren Methoden Namen geben, die bereits "reserviert" sind und das Verhalten von Objekten überraschend ändern könnten.