Zum Inhalt springen

Zahlenaddition mit Nachfrage für User


Chriss123

Empfohlene Beiträge

Hallo,

ich habe ein Programm, wo entsprechend Zahlen nacheinander addiert werden sollen. Allerdings soll nach jeder Eingabe einer Zahl nachgefragt werden, ob noch eine weitere Zahl eingegeben werden soll. Bei der Antwort "Ja" kann man dann eine weitere Zahl eingeben. Bei der Antwort "Nein" wird das bisherige Ergebnis ausgegeben. Mein Problem ist, dass die Abfrage zwar kommt, aber er dann jedes Mal raus geht aus der Schleife, egal ob "Ja" oder "Nein". Anbei mein bisheriger Quellcode. Würde mich freuen, wenn mir jemand helfen könnte. Vielen Dank im Voraus.


import java.util.Scanner;



public class addierencompare {


  public static void main(String[] args) {


    int zahl=0;

    int ergebnis=0;

    String antwort;


    Scanner einlesen = new Scanner(System.in);


    do{

      System.out.println("Geben Sie eine Zahl ein:  ");

      zahl = einlesen.nextInt();



      System.out.println("Möchten Sie noch eine Zahl eingeben (Ja/Nein):");


      antwort = einlesen.next();


      if (antwort.compareToIgnoreCase("ja") == 0) {

        ergebnis = ergebnis + zahl;

      } else {

        ergebnis = ergebnis + zahl;

        System.out.println(" Sie haben Nein eingegeben, das Ergebnis lautet: " + ergebnis);   


      }

    } while(antwort.compareToIgnoreCase("nein") != 0 && antwort.compareToIgnoreCase("ja") != 0);


    System.out.println("Sie haben " + antwort + " eingegeben");


  } // end of main


} // end of class addierencompare

Bearbeitet von flashpixx
Code-Tags
Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen Dank erstmal für die Antworten. Die Änderung mit while(antwort.compareToIgnoreCase("nein") ); hatte ich auch schon. Komischer weise funktioniert das nicht. Da kommt eine Fehlermeldung beim Compilieren. Mit folgender while-Bedingung funktioniert das Programm nun: while(antwort.compareToIgnoreCase("nein") != 0 || antwort.compareToIgnoreCase("ja") == 0); . Das müsste doch eigentlich auch richtig sein oder ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Servus Chriss123,

ich habe das Ganze mal nachgebaut als Beispiel, wie man es machen könnte, oder auch die grundsätzliche Herangehensweise "wie man es übersichtlich gestaltet, oder gestalten könnte" aufgezeigt.

Hier mein Beispiel:

package AddierenCompare;


public class Start 

{


  public static void main(String[] args) 

  {

	  Start prgname = new Start();

	  JaNein frage = new JaNein();

	  Addieren add = new Addieren();


	  do

	  {

		  add.Add();

		  System.out.println("Zwischenergebnis: " + add.summe);

	  }

	  while(frage.Wiederholen() == true);


	  add.ShowResult();

	  System.out.println("Programm " + prgname.getClass().getName().toString() + " wurde beendet." );

  } // end of main


} // end of class Start
package AddierenCompare;


import java.util.Scanner;


public class Addieren 

{

	public int summe = 0;


	public int Add()

	{

		Scanner einlesen = new Scanner(System.in);

		System.out.println("Bitte geben Sie eine Integer-Zahl ein: "); 	

		int wert = einlesen.nextInt();

		return (this.summe += wert);		

	}


	public void ShowResult()

	{

		System.out.println("Das Endergebnis lautet: " + this.summe);

	}

}
package AddierenCompare;


import java.util.Scanner;


public class JaNein 

{	

	public boolean Wiederholen()

	{

		Scanner einlesen = new Scanner(System.in);

		boolean retval = false;


		System.out.println("Möchten Sie noch eine Zahl eingeben (Ja/Nein): ");


	    String antwort = einlesen.next();


		if(antwort.compareToIgnoreCase("ja") == 0)

			retval = true;


		return retval;		

	}


}

Der Aufbau einer Code/Klassenstruktur hat viele Vorteile. U.A. den, dass man Fehler schneller entdecken kann, oder macht das Ganze besser lesbar.

So, denn mal viel Erfolg mit Java ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, also soooo schwer nachzuvollziehen ist das nun auch nicht.

Für einen Anfänger ist es durchaus wichtig zu lernen, wie man selbst den Fehler behebt. Es mag ja ein gut gemeinter Ratschlag sein, aber Du nimmst leider damit den Lerneffekt.

Z.B. ist Dein Vorschlag mit Klassen schwierig nach zu vollziehen, wenn man nicht weiß was eine Klasse ist. Außerdem muss man eine Boolean-Variable nicht auf == true prüfen, denn sie enthält schon den passenden Wert, dieser Code ist somit überflüssig bei Dir. Gleiches gilt für deine JaNein Klasse, die Überprüfung auf == 0 braucht man nicht, da 0 / NULL als false definiert ist, d.h. eine einfache Negation reicht und macht Deine Booleanvariable retval überflüssig. Weiterhin erzeugst Du mit diesem Code bei jeder Iteration ein neues Scannerobjekt, das führt zu schnellem anwachsen den Speichers, d.h. es wäre sinnvoller nur ein Scannerobjekt zu erzeugen und dieses mehrfach zu verwenden, d.h. die Speichernutzung ist nicht sinnvoll.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...