Wiso funktioniert das bluej schnick schnack schnuck programm nicht

2 Antworten

Das Problem liegt in diesen Zeilen:

while (S1 == S2) {
    int S1 = zufall.nextInt(3);
    int S2 = zufall.nextInt(3);
}

Die Klasse "Stein" besitzt Attribute "S1" und "S2". Diese werden beim Eintritt in die kopfgesteuerte Schleife auf Gleichheit überprüft. Natürlich sind sie gleich, nämlich 0. In der Schleife deklarierst du lokale Variablen "S1" und "S2", welche mit einem Zufallswert gefüllt werden. Beim nächsten Schleifendurchgang werden wieder die Attribute "S1" und "S2" auf Gleichheit überprüft. Da sie nicht geändert wurden, sind diese immer noch gleich. Das Ergebnis ist eine Endlosschleife.

Du solltest also die 2 "int" entfernen oder dir eine andere Bedingung für die Schleife überlegen.

16

Sag ich ja :)

0
21
@ProfWho

Nach dem Lesen deiner Antwort dachte ich, dass du denkst, dass der Aufruf "zufall.nextInt(3)" den lokalen Variablen "S1" und "S2" die gleichen Werte zuweist. Das kann natürlich passieren, muss allerdings nicht. Und es war nicht der Fehler, der die Endlosschleife verursacht hat.

0
1

danke :)

0

Hallo, Die Fehlermeldung wäre auch hilfreich ;)

1

sorry..gibt keine fehlermeldung aber das programm hört nicht auf zu laufen wenn ich es starte

0
16
@kirchnfr

Das wollt ich wissen :) was das Problem ist xD

while (S1==S2) { int S1= zufall.nextInt(3); int S2= zufall.nextInt(3); }

Wie soll das auch gehen. Du definierst beide Variablen gleich und somit werden sie immer gleich sein. Und das ist die Bedingung deiner Schleife! (while (S1==S2))

1

Java Spiel Fehler im Code?

Hallo,

Ich muss für die Schule in Java ein Code für ein Spiel schreiben. Hierbei habe ich mich für "Schere, Stein, Papier" mit 5 Varianten entschieden.

Für den Code habe ich lange gebraucht doch als ich endlich fertig war und ihn ausprobiert habe, habe ich keine Fehlermeldung bekommen - sprich der Code enthält 'in Java Sprache' keine Fehler.

Doch das Spiel funktioniert nicht!

Gibt es hier bereitwillige Spezialisten die mir helfen können meinen Fehler im Code zu finden?

Ich bin echt nicht gut in Informatik...

import java.awt.; import java.applet.; import java.util.Scanner;

public class KampfDerElemente extends Applet {

public static void main(String[] args) {

while(true) {

System.out.println("Sie haben die Wahl");

System.out.println("1 - Feuer");

System.out.println("2 - Wasser");

 System.out.println("3 - Luft");

 System.out.println("4 - Erde");

 System.out.println("5 - Elektro");

 Scanner input = new Scanner(System.in);

 int pcwahl;

 pcwahl = (int) (Math.random() * 5) + 1;

 int feuer = 1;

 int wasser = 2;

int luft = 3;

 int erde = 4;

 int elektro = 5;

if (input.nextInt() == pcwahl) {

System.out.println("Unentschieden!");}

if ((pcwahl == feuer) && (input.nextInt() == 3 || input.nextInt() == 5)){

System.out.println("Der Computer hat gewonnen!");

           }

else if (input.nextInt() == 2 || input.nextInt() == 4){

System.out.println("Sie haben gewonnen!");}

                    

           if ((pcwahl == wasser) && (input.nextInt() == 1 || input.nextInt() == 4)){

               System.out.println("Der Computer hat gewonnen!");}

                

               else if (input.nextInt() == 3 || input.nextInt() == 5){

                   System.out.println("Sie haben gewonnen!");}

                    

           if ((pcwahl == luft) && (input.nextInt() == 1 || input.nextInt() == 4)){

               System.out.println("Sie haben gewonnen!");}

                

               else if (input.nextInt() == 2 || input.nextInt() == 5){

                   System.out.println("Der Computer hat gewonnen!");}

                        

           if ((pcwahl == erde) && (input.nextInt() == 1 || input.nextInt() == 3)){

               System.out.println("Der Computer hat gewonnen!");}

                            

               else if (input.nextInt() == 2 || input.nextInt() == 5){

                   System.out.println("Sie haben gewonnen!");}

                    

           if ((pcwahl == elektro) && (input.nextInt() == 1 || input.nextInt() == 3)){

               System.out.println("Sie haben gewonnen!");}

                

               else if (input.nextInt() == 2 || input.nextInt() == 4){

                   System.out.println("Der Computer hat gewonnen!");}

                           }

                       }

                   }

LG Ollivoe

...zur Frage

Wie mehrere Methoden in Java

Hallo zusammen,

und zwar lern ich gerade Java und hab mir en Programm geschrieben, dass einen Roulett-Tisch simulieren sollte. jetzt kahm mein ausbilder her und hat mir lauter Methoden über mein Programm geschriebn, jetzt wei´ß ich nicht, wie ich das machen muss oder was ich da überhaupst machen soll, kann mir jemand helfen ???

Entwicklungsumgebung: Eclipse

import java.util.*;

public class Roulette {

 private static boolean askForHighRisk(){
      return false;
  }
  private static boolean askForQuit(){
      return true;
  }
  private static boolean askBetOnEven(){
      return true;
  }
  private static int askSetOnNumber(){
    return 0;

  }
  private static int askForStake(int minLimit, int maxLimit){
      return 0;
  }
  private static int rollBall() {
      return 1;
  }  

  public static void main(String[] args) {

  System.out.printf("Bitte gib dein Startgeld zwischen 10€ und 10.000€ ein (in 10€ Schritten)!!!\n");

  Scanner startMoney = new Scanner (System.in);
  int  startmoney = startMoney.nextInt();
  int modulo = startmoney%10;
  int realstartmoney = 0;
  int zahlintager;
  String A= "A";
  String B= "B";
  String ja = "ja";
  String nein = "nein";


  //set the startmoney, only 10€ steps between 10 -10 000 
  if (startmoney > 10000) {
    startmoney =10000;
  }

  if (startmoney != 0) {
    realstartmoney = startmoney-modulo;
  }
  else {
    realstartmoney = startmoney;
  }

System.out.println("Sie haben jetzt " + realstartmoney + "€ auf ihrem Konto");

//loop till no money
  while (realstartmoney >0) {

    //set random int number
    int generator = (int) (Math.random()*36);      



  System.out.println("Wollen sie mit einer \"A (hohen)\" oder einer \"B (niedrigen)\" Chance spielen?");



  String choiceAorB = new String();
  Scanner AorB = new Scanner(System.in);
  choiceAorB = AorB.next();
  int geradeungerade = generator % 2;       

  if (choiceAorB.contentEquals(A)) {
    System.out.println("wollen sie auf \"A (gerade)\" oder \"B (ungerade)\"setzen");


    String choiceBorA = new String();
    Scanner BorA = new Scanner(System.in);
    choiceBorA = BorA.next();

    System.out.println("Wie viel wollen sie setzen????");

    Scanner setMoney = new Scanner(System.in);
    int nosetmoney = setMoney.nextInt();
    int setmoney = 0;
    int modulo2 = nosetmoney%10;

    if (modulo2 != 0) {
      setmoney = nosetmoney-modulo2;
    }
    else {
      setmoney = nosetmoney;
    }

    if (setmoney < 10) {
      System.out.println("Dein Einsatz wurde auf 10€ gesetzt");
      setmoney =10;
    }
          if (setmoney> realstartmoney) {
            System.out.println("So viel Geld h
...zur Frage

Bei mir funktioniert if und Else nicht beim Input in java?

Hi, bin noch neu in Java und lerne gerade noch Konsolenausgabe. Ich habe versucht mit meinem Wissen Schere Stein Papier zu coden, aber als ich es dann gestartet habe wurde immer das ausgegeben was im Else Stande obwohl ich etwas aus dem If eingegeben habe:

System.out.println("Spieler 1:");
String a = new java.util.Scanner(System.in).nextLine();
System.out.println("Spieler 2:");
String b = new Java.util.Scanner(System.in).nextLine();
if(a == "Schere" && b == "Papier"){
System.out.println("Spieler 1 gewinnt");
}
//Und das ganze mit allen weiteren Möglichkeiten und mit Else{System.out.println("Fehler");
}

//Bitte helfen D:

...zur Frage

Was möchtest Du wissen?