java schleife problem?

aufgabe - (Java, Schleifen)

1 Antwort

Hallo :D zuerstmal folgendes:

deine Variable zahl wird nicht initialisiert (bei int zahl;) und du versuchst dann direkt auf zahl zuzugreifen in deiner while-bedingung. In java darf man nicht auf eine Variable zugreifen, wenn dort noch nichts reingeschrieben wurde, d.h. das sollte irgendwie so aussehen: int zahl = irgendeinWert;

Dann empfehle ich dir dringenst dein Scanner bitte oberhalb deiner Schleife zu definieren, deklarieren und zu initialisieren! 

Dann zu deinen if's. Nach den if's darfst du kein ; machen! die gehören da nicht hin! 

if (zahl > zufall) {
   System.out.println("Zu hoch!");
}

Also ohne ; (Semikolon) nach der if-Bedingung!

Dann hast du bei der letzten if (zahl != zufall), dabei möchtest du ja testen, ob die zahlen GLEICH sind, also darfst du nicht != benutzen, sondern musst == benutzen.

Und jetzt, wie kannst du es verbessern?
Anstatt einer normalen while (kopfgesteuert) würde ich eine do-while (fußgesteuert) benutzen, das hat den vorteil, dass du zahl dann DOCH nicht mehr direkt initialisieren musst, sondern du kannst in der schleife es so machen, wie du willst, da aus zahl erst gelesen wird, NACHDEM du initialisiert hast:

do {
   // Hier dein Code
}
while (zahl != zufall);

Hier wird der Code mindestens EINMAL ausgeführt, BEVOR auf die Bedingung getestet wird! (beachte hier das semikolon nach while!)

Und dann empfehle ich dir, anstatt drei extra if's zu benutzen das sepcial-statement else-if zu verwenden.
Momentan frägt er bei jeder Iteration (schleifendruchlauf) jede einzelne der 3 if's ab. mit else-if frägt er nacheinander ab, aber dort, wo er merkt das passt geht er rein und handelt das ab und alles danach wird ignoriert:

if (bedingung1) {
   // Code
}
else if (bedingung2) {
   // Code
}
else {
   // Code
}

Wenn Bedingung1 false, dann guck bedingung2, wenn di auch false, dann mach else.
Wenn bedingung1 true, dann mache erstes if und ignoriere den rest, denn der ist in diesem beispiel danach überflüssig.
else-if ist beliebig oft verwendbar!

Ich habe hier mal den Code, der inklusive den Verbesserungen daherkommt!
Versuche ihn aber selbst zu verstehen und nicht einfach Copy&Paste einzusetzen!!! 

Ich hoffe, diese Antwort hilft dir und du verstehst sie!

Hier gibts ja leider kein Spoiler! Also nur weiterlesen, wenn du die antwort wissen möchtest!

Scanner s = new Scanner(System.in);
int zufall = (int) (Math.random() * 100) + 1;
int zahl;

do
{
System.out.println("Eine Zahl: ");
zahl = s.nextInt();

if (zahl < zufall)
{
System.out.println("Zu niedrig!");
}
else if (zahl > zufall)
{
System.out.println("Zu hoch!");
}
else
{
System.out.println("Bingo!");
}
}
while (zahl != zufall);

Und für den Zusatz brauchst du lediglich eine Hilfsvariable, die bei jedem durchlauf um eins hochgezählt wird :D 

1

Ergänzung: In diesem Fall ist kein weiteres else-if (nedingung) mehr nötig, da die ersten beiden if's alle falschen fälle abdecken, und der else fall eben nur ausgeführt wird, wenn die beiden oberen false sind, d.h. in diesem fall kann es nur noch zahl == zufall sein.

alternativ hätte man auch so schreiben können für klarheit:

if (zahl < zufall) { // Code }
else if (zahl > zufall) { // Code }
else if (zahl == zufall) { // Code }

also einfach nochmal ausführlich, statt nur else, aber das hat in diesem fall den gleichen effekt :D

1

Vielen danke für die Hilfe, aber hab mein Problem schon gelöst :D

jetzt brauch ich nur noch ein Zähler der zählt wie oft es schon gemacht wurde :)

1

Fehler in leichtem Javascript, wo ist er?

import java.util.Scanner;

public class Antwortscanner{ // Anfang Methoden public static void main (String [] args){ System.out.println("Wie alt bist du?"); Scanner input = new Scanner(System.in); String Alter = input.nextInt();

if (Alter <= 18)
{      
  System.out.println("Du bist aber Jung :^)");
  }
else{
  System.out.println("Alter Knacker");
}

} }

Fehlerquelle: Antwortscanner.java:8:33: error: incompatible types: int cannot be converted to String String Alter = input.nextInt(); ^ Antwortscanner.java:10:15: error: bad operand types for binary operator '<=' if (Alter <= 18) ^ first type: String second type: int

...zur Frage

Java:Taschenrechner:Konsole:Problem

import java.util.Scanner;

public class test{
    public static void main(String[] args){

        System.out.println("Dies ist ein Taschenrechner, bitte nur folgende Rechenmethoden verwenden(ausgeschrieben): ");
        System.out.println("plus\n"+"minus\n"+"mal\n"+"durch\n");

        Scanner eingabe = new Scanner(System.in); //Scanner

        String rechenmethode = String.valueOf(eingabe); //String deklarieren

        double zahl1, zahl2; //Varriablen deklarieren


        System.out.println("Erste Zahl bitte: "); //Abfrage erste Zahl
        zahl1 = eingabe.nextDouble();
        System.out.println("Rechenmethode bitte: "); //Abfrage Rechenmethode
        rechenmethode = eingabe.next();
        System.out.println("Zweite Zahl bitte: "); //Abfrage zweite Zahl
        zahl2 = eingabe.nextDouble();
        Double Summe = zahl1+zahl2; //verarbeiten der eingaben
        Double Differenz = zahl1-zahl2; //verarbeiten der eingaben
        Double Produkt = zahl1*zahl2; //verarbeiten der eingaben
        Double Quotient = zahl1/zahl2; //verarbeiten der eingaben


        if(rechenmethode.equals("plus")){ //Ausgeben des Ergebnisses
            System.out.println(Summe);
        }
        else if(rechenmethode.equals("minus")){ //Ausgeben des Ergebnisses
            System.out.println(Differenz);
        }
        else if(rechenmethode.equals("mal")){ //Ausgeben des Ergebnisses
            System.out.println(Produkt);
        }
        else if(rechenmethode.equals("durch")){ //Ausgeben des Ergebnisses
            System.out.println(Quotient);
        }




        System.out.println("\n\nby Max Musterma"); //Ausgabe des wundervollen Namen des Programmierers

    }
}

Taschenrechner der 2Zahlen zusammenrechnet...

Nun will ich beliebig viele Zahlen zusammenrechnen..

import java.util.Scanner;
public class Rechner2 {
    public static void main(String[]args){

        Scanner eingabe = new Scanner(System.in);

        double ergebnis = 0;
        int i = 0;

        while(i<1){
            System.out.println("Zahl:");
            double zahl = eingabe.nextDouble();
            if(zahl == 0){
                break;
            }
            System.out.println("Rechenmethode:");
            String zeichen = eingabe.next();
            if(zeichen.equals(0)){
                break;
            }
            switch(zeichen){
                case "+": ergebnis = ergebnis + zahl;
                break;
                case "-": ergebnis = ergebnis - zahl;
                break;
                case "*": ergebnis = ergebnis * zahl;
                break;
                case "/": ergebnis = ergebnis / zahl;
                break;  
            }
        }
        System.out.println(ergebnis);

        System.out.println("\n\nMax Mustermt");
    }
}

testen...

man kann nun beliebig viele Zahlen zusammenrechnen, mit verschiedenen

...zur Frage

Was möchtest Du wissen?