Anfänger braucht Hilfe bei Hausübung! Sprachauswahl? Wie?

wiesner95

Mitglied
Hallo liebes Forum,

Ich bin 15 jahre alt und lerne in der Schule seit einigen Monaten mit Java zu Programmieren.
Ich habe ein Programm geschrieben welches eine Zufallszahl generiert und der Benutzer soll jene erraten.
Das Programm soll ich dann im DOS-Fenster ablaufen lassen.
Als zusatz muss ich noch eine Sprachauswahl einbauen die in etwa so aussehen soll: Der User wird gefragt ob das folgende Programm in Deutsch oder in Englisch ablaufen soll.
Der Code für mein Programm liegt im Thema bei.
Da ich erst seit wenigen Monaten mit Java zu tun habe ist es sicher nicht die eleganteste Lösung für meine Hausübung, aber mir liegen nur diese Befehle vor welche ich in dem Programm benutzt habe.

Meine Bitte wäre nun: Wie mache ich hier eine Sprachauswahl?

Das ganze sollte so ablaufen: Der PC fragt den User in welcher Sprahce (Deutsch oder Englisch) das Programm laufen soll, danach gibt der User je nachdem "english" oder "german" ein und das Programm Startet je nachdem.

Da mein jetztiger Code sicher nicht der beste ist, könnt ihr mir auch gerne Vorschläge machen wie ich das ganze etwas schlichter halten könnte bzw verbessern könnte.

Achja, bitte lacht nicht über meine jemmerlichen Kenntnisse!

Java:
import java.util.*;
public class Zufallszahl{
       public static void main(String[] args){
          Scanner sb=new Scanner(System.in);
          System.out.println("Zufallszahlen-Generator - Erraten sie die generierte Zahl!");
          System.out.println("                    Viel Spaß!");
          System.out.println();
          do{

            int max=100;
            int zufallszahl=(int)(Math.random()*max+1);
            for(int a=2; a>-1; a--){
                    System.out.println();
                    System.out.print("Bitte geben Sie eine Zahl von 1 bis 100 ein: ");

                    Scanner sc= new Scanner(System.in);
                    int x=sc.nextInt();

                    if(x<zufallszahl){
                      System.out.println();
                      System.out.println("Die Zahl " + x + " ist kleiner als die gesuchte Zahl!");
                           if(a==0){
                                    System.out.println("Sie haben Keine Versuche mehr frei!");
                                    System.out.println();
                                    System.out.println();
                           }
                           else{
                                System.out.print("Sie haben noch " +  a + " Versuche offen!");
                                System.out.println();
                                System.out.println();
                           }
                    }
                    else{
                      if(x>zufallszahl){
                      System.out.println();
                          System.out.println("Die Zahl " + x + " ist größer als die gesuchte Zahl!");
                                    if(a==0){
                                             System.out.println("Sie haben Keine Versuche mehr frei!");
                                             System.out.println();
                                             System.out.println();
                                    }
                                    else{
                                         System.out.print("Sie haben noch " +  a + " Versuche offen!");
                                         System.out.println();
                                         System.out.println();
                                    }
                      }
                      else{
                          System.out.println();
                          System.out.println("Die gesuchte Zahl stimmt mit der eingegebnen überein!");
                                      if(a==0){
                                               System.out.println("Herzlichen Glückwunsch");
                                               System.out.println();
                                               System.out.println();
                                      }
                                      else{
                                           System.out.print("Sie haben noch " +  a + " Versuche offen!");
                                           System.out.println();
                                           System.out.println();
                                      }
                      }
                    }
            }
            System.out.println();
            System.out.println("Die gesuchte Zahl war " + zufallszahl + "!");
            System.out.println();
            System.out.println();
            System.out.print("Wollen sie nochmals (ja/nein)?: ");
            }while( ( sb.next()).equals("ja"));
            System.out.println();
            System.out.println();
            System.out.println("                  Danke, dass sie Wiesner-Systems benutzt haben!");

       }
}

Ich bitte um einfach zu verstehende Antworten!
Danke!

mit hoffnung auf baldige Antwort
wiesner95
 
Hey,

Dies ist dann eigentlich der einfachste Teil was da noch kommt.

Du baust einfach noch einen weiteren if ein.
Du frägst zuerst wieder welche Sprache gewählt werden soll. Dann spreicherst du die Tastatureingabe in einer Variablen, z.B. mSprache

Java:
System.out.println("Englisch oder Deutsch ?");
String mSprache = next();

if(mSprache.equals("Englisch")
{
      // unter der Voraussetzung, dass dein bisheriges Programm läuft, einfach den Code nehmen und die jeweilige Konsolenausgabe abändern, indem du den Englischen Text nutzt
}
else
{
     // Dein Alter Code
}

Gruß Fitzi
 
Zuletzt bearbeitet:
Mal abgesehen davon, dass man die Sprachwahl nicht so programmiert...und hunderter anderer Fehler die gegen den guten Programmierstil verstossen...wäre das auf alle Fälle eine Möglichkeit, deinen Wunsch zu entsprechen.

Du definierst eine boolsche Variabel, die entweder wahr (deutsch), oder falsch(englisch) ist.
Nach der Wahl der Eingabe, musst du halt jede [c]System.out.println("...");[/c] mit einer Prüfung belegen, ob die Ausgabe in Deutsch, oder in Englisch erfolgen soll.

So könnte man das machen...aber das ist alles andere als richtig und gut und hat nichts, aber auch garnichts mit OO zu tun!!!

Java:
public class Zufallszahl {
	public static void main(String[] args) {
		boolean sprache = true;
		Scanner sb = new Scanner(System.in);
		
		System.out.println("Wählen Sie Ihre Sprache: (deutsch oder englisch)");
		System.out.println("Choose your language:(german or english)");
		
		String auswahlSprache = sb.next();
// hier überprüft er halt die eingabe und ignoriert groß- und kleinschreibung
		if (auswahlSprache.equalsIgnoreCase("englisch")
				|| auswahlSprache.equalsIgnoreCase("english")
				|| auswahlSprache.equalsIgnoreCase("e")) {

			sprache = false;

		}

		System.out.println("");

		if (sprache) {
			System.out
					.println("Zufallszahlen-Generator - Erraten sie die generierte Zahl!");
			System.out.println("                    Viel Spaß!");
		} else {
			System.out
					.println("Random number-Generator - guess the generated number");
			System.out.println("                    Have Fun!");
		}

...
 
Java:
package javaforum;

import java.util.*;

public class Zufallszahl {

	public static void main(String[] args) {
		Scanner sb = new Scanner(System.in);

		System.out
				.println("Zufallszahlen-Generator - Erraten sie die generierte Zahl!");
		System.out.println("\t\tViel Spaß!\n");

		do {

			int max = 100;
			int zufallszahl = (int) (Math.random() * max + 1);
			for (int a = 20; a >= 0; a--) {
				System.out
						.print("\nBitte geben Sie eine Zahl von 1 bis 100 ein: ");

				Scanner sc = new Scanner(System.in);
				int x = sc.nextInt();

				if (x < zufallszahl) {
					System.out.println("\nDie Zahl " + x
							+ " ist kleiner als die gesuchte Zahl!");
				} else if (x > zufallszahl) {
					System.out.println("\nDie Zahl " + x
							+ " ist größer als die gesuchte Zahl!");
				} else {
					System.out
							.println("\nDie gesuchte Zahl stimmt mit der eingegebenen überein!");
					break;
				}
				if (a == 0) {
					System.out
							.println("\nSie haben keine Versuche mehr frei!");
				} else {
					System.out.print("\nSie haben noch " + a
							+ " Versuche offen!");
				}
			}

			System.out.println("Die gesuchte Zahl war " + zufallszahl + "!");
			System.out.println();
			System.out.println();
			System.out.print("Wollen sie nochmals (ja/nein)?: ");
		} while ((sb.next()).equals("ja"));
		System.out.println();
		System.out.println();
		System.out
				.println("                  Danke, dass sie Wiesner-Systems benutzt haben!");

	}
}

Zuerst mal bisschen über deinen Code gegangen.

Was du machen könntest wäre 2 HashMaps zu nehmen z.B.
Java:
HashMap<String, String> deutsch = new HashMap<String, String>();
HashMap<String, String> englisch = new HashMap<String, String>();

deutsch.put("start", "Zufallszahlen-Generator - Erraten sie die generierte Zahl!");
englisch.put("start", "Random number-Generator - guess the generated number");

/*
* Sprachabfrage:
*/

boolean sprachwahl = checkLanguage();
		
		HashMap<String, String> used;
		if(sprachwahl){
			used = deutsch;
		}
		else {
			used = englisch;
		}

System.out.println(used.get("start"));

// ergibt dann den hinterlegten String der entsprechenden Map
 
Hey,

Dies ist dann eigentlich der einfachste Teil was da noch kommt.

Du baust einfach noch einen weiteren if ein.
Du frägst zuerst wieder welche Sprache gewählt werden soll. Dann spreicherst du die Tastatureingabe in einer Variablen, z.B. mSprache

Java:
System.out.println("Englisch oder Deutsch ?");
String mSprache = next();

if(mSprache.equals("Englisch")
{
      // unter der Voraussetzung, dass dein bisheriges Programm läuft, einfach den Code nehmen und die jeweilige Konsolenausgabe abändern, indem du den Englischen Text nutzt
}
else
{
     // Dein Alter Code
}

Gruß Fitzi

Also ich habe das so probiert jeddoch zeigt er mir einen Fehler an bei

Java:
String mSprache = next();

er zeigt mir das next an ?
ne idee weshalb ?
 
Du definierst eine boolsche Variabel, die entweder wahr (deutsch), oder falsch(englisch) ist.

Und wenn da später eine 3. dazu kommen soll? Außerdem ist der Variablenname
Code:
sprache
nichtssagend. Wenn, dann sowas wie
Code:
deutsch
,
Code:
deutschEingestellt
oder was auch immer

jeddoch zeigt er mir einen Fehler an bei
...
er zeigt mir das next an ?

Und du meinst nicht, dass die Fehlermeldung interessant für die Lösung sein könnte?
Aber schau dir das Beispiel von oben noch mal genau an. Da steht nicht nur next, sondern noch etwas davor...
 
Zuletzt bearbeitet:
Und wenn da später eine 3. dazu kommen soll? Außerdem ist der Variablenname
Code:
sprache
nichtssagend. Wenn, dann sowas wie
Code:
deutsch
,
Code:
deutschEingestellt
oder was auch immer

keep it simple

Das der name crap ist, gebe ich zu. aber ist ja nur ne anregung gewesen.
 
Das lässt sich nochmals massiv vereinfachen.

Der Zugriff auf die Strings (siehe get) geht ohne Fallunterscheidung ...
Eine Sprache mehr, hat keinen Einfluss auf die Businesslogik ...

Java:
import java.util.*;

public class Test3 {
	private static HashMap<String, String> deutschStrings = new HashMap<String, String>();
	private static HashMap<String, String> englischStrings = new HashMap<String, String>();
	private static HashMap<String, String> franzoesischStrings = new HashMap<String, String>();

	private static HashMap<String, String> aktuelleSprache = deutschStrings;
	
	public static final String deutsch      = "deutsch";
	public static final String franzoesisch = "franzoesisch";
	public static final String englisch     = "englisch";
	// Keys
	public static final String hallo = "hallo";
	public static final String welt = "welt";
	
	public static void init() {
		deutschStrings.put(hallo, "Hallo");
		englischStrings.put(hallo, "hello");
		franzoesischStrings.put(hallo, "Salue");
		deutschStrings.put(welt, "Welt");
		englischStrings.put(welt, "world");
		franzoesischStrings.put(welt, "monde");
	}

	public static String get(String pKey) {
		return aktuelleSprache.get(pKey);
	}

	public static void helloWorld() {
		System.out.println(get(hallo) + " " + get(welt));
	}
	
	public static void setLanguage(String pLang) {
		if (englisch.equals(pLang)) {
			aktuelleSprache = englischStrings;
		} else if (franzoesisch.equals(pLang)) {
			aktuelleSprache = franzoesischStrings;
		} else {
			aktuelleSprache = deutschStrings;
		}
	}
	public static void main(String[] args) {
		init();
		helloWorld();
		setLanguage(englisch);
		helloWorld();
		setLanguage(franzoesisch);
		helloWorld();
		setLanguage(deutsch);
		helloWorld();
	}
}
 

Zurück
Oben