Schwierige Java/informatik Frage?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
package pack1;

import java.util.Scanner;

public class Main {
	static Scanner sc;
	static String answer = "1991";
	static String question = "In welchem Jahr wurde der erste Teil der U-Linie U3 eröffnet?";
	static boolean answerFound = false;
	static int tries = 0;
	

	public static void main(String[] args) {
		
		sc = new Scanner(System.in);
		
		game();
	}
	
	
	static void game() {
		System.out.println(question);
		
		for (int i = 0; i < 5; i++) {
			String answ = sc.nextLine();
			
			if (answ.equals(answer)) {
				answerFound = true;
				break;
			}			
			System.out.println("Falsch!");
			tries++;
		}
		
		if (answerFound) {
			System.out.println("Korrekt!");
			System.out.println("Du erhältst " + (4 - tries) + " Punkte!");
		} else {
			System.out.println("Du warst nicht in der Lage, die Antwort zu finden!");
		}
		
	}
}

So würde ich das machen. Wenn du was lernen willst, schreibst du das jetzt selber, und vergleichst, wenn du nicht weiterkommst. Du kannst das natürlich aber auch einfach kopieren, aber da lernst du natürlich nichts bei.

Danke für deine Antwort! Hat mir geholfen und mein Programm funktioniert jetzt. Wenn du etwas Zeit hättest, könntest du mir erklären wieso das so geht?

Also anhand meines Programms:

public class CUebung17{

   public static void main(String[] args){

      int userantwort, antwort=1991, versuche=0;

      boolean answer=false;

      for (int i=0; i<5; i++){

         System.out.println("In welchem Jahr wurde die U-Bahn Linie U3 eroeffnet?");

         userantwort=Keybd.getInt();

         if(userantwort == antwort){

            answer=true;

            break;

         }

         System.out.println("Falsch");

         versuche++;

      }

      if(answer) {

         System.out.println("Richtig");

         System.out.println("Du erhaeltst " +(4-versuche)+ " Punkt/e!");

      }else{

         System.out.println("Du warst nicht in der Lage, die Antwort zu finden!");

      }

   }

}

0
@YTLexan
  1. Du stellst die Frage.
  2. Du erstellst eine Schleife, welche die Antwort entgegennimmt und ihre Richtigkeit prüft. Sie läuft maximal 5 mal.
  3. Ist die Antwort falsch, wird der "Falsch"-Zähler erhöht. Ist die Antwort richtig, wird zur Auswertung gesprungen und die Frage als korrekt beantwortet markiert.
  4. Wenn die Auswertung erreicht wird, wird, je nach dem, ob die Frage richtig beantwortet wurde, die Punktzahl errechnet (Vier minus die Versuche + 1) und ausgegeben, oder der Spieler über seinen Misserfolg informiert.
1

Die Lösung kann der FS 1:1 kopieren. Nicht schlecht, dass Du das wie von einem blutigen Anfänger aussehen lassen kannst.

Gruß

0
@YTLexan

Er ist der Meinung, dass mein Code schlecht ist, und macht sich ironisch darüber lustig. Ignoriere ihn einfach. Er hilft niemandem.

0

Zunächst benötigst du einen Scanner zum Einlesen der Eingaben sowie eine Zählschleife:

boolean korrekt = false;
Scanner s = new Scanner(System.in);
for (int i = 0; i < 5 && !korrekt; ++i) {
  System.out.print("Frage... ");
  String antwort = s.nextLine();
  // ...
}

Dadurch gibst du die Frage aus und liest die Antwort ein. Dies wiederholst du insgesamt fünfmal. Nun überlege dir, wie du überprüfen kannst, ob die Antwort korrekt ist. Tipp: Strings werden mit der equals-Methode verglichen. Bei einer korrekten Antwort musst du korrekt auf true setzen und die Punktezahl in Abhängigkeit von i ausgeben (reine Mathematik). Hast du dafür schon einen Ansatz?

Das ist alles so gut, aber das Problem ist, dass ich dieses Scanner(System.in) und das !korrekt noch nicht gelernt habe xD

0
@YTLexan
Scanner(System.in)

Wie hast du denn bisher Eingaben des Nutzers eingelesen? Irgendwie musst du es ja letztendlich machen.

!korrekt

Das ist eine Kurzform für

korrekt == false
0
@tavkomann

also "wir" verwenden zum Einlesen:

int alter;

alter=Keybd.getInt();

...

0
@YTLexan

So würde das dann aussehen:

boolean korrekt = false;
for (int i = 0; i < 5 && korrekt == false; ++i) {
  System.out.print("Frage... ");
  int antwort = Keybd.getInt();
  // ...
}

Ganzzahlen kannst du direkt mit == vergleichen.

1

Tipp : die Lösung würde ich als int speichern ( int loesung = 1991; ) und die Eingabe des Benutzers auch ( int eingabe = s.nextInt(); ).

alex

0

Und Deine Frage wäre noch gleich was?

Arbeitsanweisung ist eindeutig und gibt Hinweise.

Also ich bin noch nicht soo erfahren und weiß nicht genau, wie ich das machen muss..

0
@YTLexan

Eben, deswegen mußt Du Erfahrugn sammeln.

Also, was hast Du bisher, woran scheitert es? Der eigentliche Programmcode ist nur wenige Zeilen lang und stellt auch keinerlei Herausforderung dar.

Fange vielleicht damit an, daß Du Dir überlegst, welche Variablen Du benötigst und welche Werte sie anfänglich haben sollten.

0

Also den Anfang habe ich eh schon, aber ich weiß nicht wie man macht, dass nach jeder falschen Antwort einen Punkt weniger bekommt.

0
@YTLexan

Das wäre mal eien Frage. Du nimmst eine Variable, die Du mit der höchsten Punktzahl initialisierst. Ist die Antwort falsch, ziehst Du 1 ab. Der Endwert ist die erreichte Punktzahl.

Also hast Du eien bedingte Anweisung in der Schleife, die bei falscher Antwort die Punktzahl dekrementiert und bei richtiger Antwort die Schleife verlässt.

Und wenn Du es 'tricky' machst, nutzt Du direkt die Punktzahl als Zählvariable der Schleife, das ist dann aber schon der nächste Schritt.

0

Wie kann ich das programmiertechnisch in BlueJ mit Java umsetzen?

Hallo liebe Community,

ich habe die Aufgabe bekommen, in BlueJ ein Programm zu schreiben, dass Steuern berechnet. Falls der zu versteuernde Betrag unter 5000€ liegt, sind keine Steuern zu zahlen, ab 5000€ sind 10% Steuern zu zahlen, ab 20.000€ sind 15% zu zahlen, bei 50.000€ 20%. Der Benutzer des Programmes soll dann den zu versteuernden Betrag eingeben können und erhält als Ausgabe den Steuersatz und die zu zahlenden Steuern.

Ich habe bis jetzt den Konstruktor mit den Standardwerten initialisiert und die Methode, welche es ermöglicht, die Steuern einzugeben, geschrieben. Ich komme jetzt jedoch nicht bei der Methode weiter, welche den Steuerbetrag berechnet und ausgibt. Höchstwahrscheinlich muss das dann ja in Form einer If-Anweisung erfolgen, aber wie genau? Bin absoluter Anfänger, was die Programmierung angeht und bin deshalb über jeden Rat froh!

Hier zur besseren Nachvollziehbarkeit der bisherige Quelltext:

/** * Ein Programm, das die zu zahlende Steuer abhängig von einem Betrag berechnet und zusammen mit dem * entsprechenen Steuersatz anzeigt. * * @author: * @version: 1 */ public class Steuer { // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen private double Kapital; private double Steuersatz; private double Steuern;

/**
 * Konstruktor für Objekte der Klasse Steuer
 */
public Steuer()
{
    // Instanzvariable initialisieren
    Kapital = 0;
    Steuersatz = 0;
    Steuern = 0;
}

/**
 * Gib das Kapital an.
 */ 
public void gibKapital (double neuesKapital)
{
    // tragen Sie hier den Code ein
    Kapital = neuesKapital;

}

/** 
 * Gib den Steuersatz an, der dem eingegebenen Kapital entspricht.
 */
public int gibSteuersatz (double Steuersatz, double neuesKapital)

{
    if (neuesKapital <= 5000())
    {
        System.out.println("Sie müssen keine Steuern zahlen. Herzlichen Glückwunsch!");
    }
    
...zur Frage

Wie gehen die Java Grundlagen?

Meine Lehrerin war die letzte zeit nur krank und hat uns 3 tage vor der Klausur die Themen per e-mail geschickt die wir können müssen...

-Unterschied zwischen Startklasse und Fachklasse wissen

-Java-Code in Fachklasse und Startklasse beschreiben können

-In der Fachklasse: Attribute deklarieren können , Methode selber schreiben auch mit der If-Else strukur

-In der Startklasse Objekte erzeugen können,Attributswerte in den Objekten speichern können,selbstgeschriebene Methoden mit einem Objekt benutzen,Konsolen Ausgabe schreiben können, d.h auch attributswerte aus den Objekten auslesen können

ich hab schon einige videos gesehn und im internet geschaut aber ich habe nie was passende gefunden...

wäre euch echt dankbar wenn ihr die Themen für mich erklären könntet.

Danke im voraus :)

...zur Frage

Java Problem bei Prozentrechnung

Hallo, ich habe ein Java Programm programmiert, wo ein Spielfeld mit 440 Feldern erstellt wird. Der User gibt ein wieviele Objekte (Spieler) auf dem Feld erstellt werden sollen. Danach wird in einer while schleife überprüft wie hoch die Wahrscheinlichkeit ist dass alle 440 Felder belegt werden (Variablen ja und nein). Die Wahrscheinlichkeit wird 4000 mal geprüft. Am Ende sollte erscheinen wie hoch die Wahrscheinlichkeit in % ist, aber dies geschieht nicht. Wo liegt der Fehler?

package spielfeld;

import java.awt.Point; import java.util.*; public class Spielfeld {

public static void main(String[] args) {
    short anzSpieler, counter=0;
    int ber=0;
    double prozent, ja=0, nein=0;
    System.out.println("Wieviele Spieler sollen erzeugt werden?");
    anzSpieler=new Scanner(System.in).nextShort();
    if(anzSpieler<0){
        System.err.println("Negative Werte sind unzulässig");
        System.exit(0);
    }
    while(ber<4000){

    Point[] spieler=new Point[anzSpieler];

    for(int aufz=0;aufz<spieler.length;aufz++){
        spieler[aufz]=new Point((int)(Math.random()*40),(int)(Math.random()*11));
    }

    for(int y=0;y<=10;y++){

    for(int x=0;x<=39;x++){
        if(Arrays.asList(spieler).contains(new Point(x,y))){
            System.out.print("&");
            counter++;
        }
        else
        System.out.print(".");

        }
    System.out.println("");
    }
    if(counter==440)
        ja++;
    else
        nein++;

    System.out.printf("an %s Stellen wurde ein Spieler erstellt. %n%s Spieler stehen übereinander %nja: %s nein: %s %n%n",counter,(spieler.length-counter),(int)ja,(int)nein);
    counter=0;
    ber++;
    }
prozent=100/4000*ja;
System.out.println("Wahrscheinlichkeit dass bei "+anzSpieler+" alle Felder gefüllt werden: "+prozent+" %");
}

} //bei diesem Programm wird ein Spielfeld erstellt wo der User eingeben kann wieviele Spieler ("&) erzeugt werden sollen //das Spielfelt hat 440 Felden. //Es wird gezählt wie oft alle Felder gefüllt sind //Eine schleife lässt 4000 Mal überprüfen wie hoch die Wahrscheinlichkeit bei x-Spielern ist dass alle Felder gefüllt sind //Bei 4000 ist die Mindestwahrscheinlichkeit wenn 3999 Mal nein eintrifft und 1 Mal ja 0,025%

...zur Frage

Java oder c++ anfangen?

Hey Leute,

ich lerne momentan PHP5 und bin bald damit einigermaßen vertraut.

Warum c++ einzusteigen

  • -da ich php schon recht gut kann werd ich da schnell einen Einstieg bekommen
  • -nach c++ kann ich fast jede andere Sprache schnell lernen, da c++ bei vielen anderen Sprachen seinen Enfluss hat z.B. Java (c# was ja sehr änlich ist) und Perl( hab ich nicht vor zu lernen). So nun kann ich mich nicht entscheiden zwischen Java und C++.
  • -wird für fast alles benutzt
  • fast jeder Programmiere kommt an C++ nicht rum

so nun zu Java

  • -platformunabhänig ich kann für handys etc. programmieren
  • -muss ich im kommenden Jahr so oder so lernen (Berufskolleg Wirtschaftsinformatik)
  • -soll angeblich nicht so schwer sein wie c++
  • Zuhause liegen noch Bücher rum von meinem Bruder (z.B. ein Buch mit Algorithmen, Java 5)
  • hab schon bissle Erfahrung mit eclipse

Ich kann mich nicht entscheiden. Ich würd gern c++ lernen und dann Java, leider passt das zeitlich nicht rein weil ich im nächsten Schuljahr Java anfange. Welche Sprache würdet ihr mir empfehlen?

Ähnelt PHP Java?

...zur Frage

Was möchtest Du wissen?