Erste Schritte Benzinpreisliste

Hi ich möchte ein Programm schreiben, welches eine Benzinpreisliste ausgibt und anschließend fragt, ob man das Programm neu starten möchte (J/N)

Mein Problem ist das neu starten, und das nach dem Neustart das Programm immer weiter multipliziert hier der Code :

Java:
/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 06.01.2017
  * @author
  */
                        import java.util.Scanner ;
public class Benzinpreisliste {
 
  public static void main(String[] args) {
  
    double einLiter = 1.06 ;
    Scanner sc = new Scanner(System.in) ;
    boolean neustart  ;
  
  
  
    do {
      for (int i = 1;i<=10 ;i++ ) {
        System.out.println(i + " Liter kostet" + einLiter);
        einLiter = einLiter * 2   ;
      } // end of for
    
    
      System.out.println(" Wollen sie das Programm erneut ausführen ? (J/N)");
      String eingabe = sc.next() ;
    
      eingabe.compareToIgnoreCase( ("J") );  //habe ich probiert die eingabe mit einem anderen String zu vergleichen
    
      if (eingabe == "J") {
        neustart = true ;
      } else {
        neustart = false ;
      } // end of if-else
    
    } while (neustart!=true); // end of do-while
  
  
  } // end of main
 
} // end of class Benzinpreisliste
Würde mich über einen Lösungsansatz sehr freuen

Mfg

Alex
 
Zuletzt bearbeitet von einem Moderator:

VfL_Freak

Top Contributor
Moin,
Mein Problem ist das neu starten, und das nach dem Neustart das Programm immer weiter multipliziert hier der Code :
Java:
// ...
    double einLiter = 1.06 ;
    Scanner sc = new Scanner(System.in) ;
    boolean neustart = false;  // Variable initialisieren !!!

    do
    {
      for (int i = 1;i<=10 ;i++ )
     {
        System.out.println(i + " Liter kostet" + einLiter);
        einLiter = einLiter * 2;   // sinniger wäre wohl "einLiter * i" !!
      } // end of for
 
          System.out.println(" Wollen sie das Programm erneut ausführen ? (J/N)");
      String eingabe = sc.next() ;
 
//      eingabe.compareToIgnoreCase( ("J") );  überflüssig !!
 
      if (eingabe == "J")  // Strings vergleicht man '.equals' !!!
      {
        neustart = true ;
      }
    } while (!neustart);  // besser !!
  } // end of main
 
} // end of class Benzinpreisliste
vgl. meine Kommentare im Code !!

Wobei Du die Variable 'neustart' eigentlich gar nicht brauchst!
Du kannst ja direkt "eingabe" prüfen !!
Java:
while( eingabe.equals("j") || eingabe.equals("J") );
Gruß Klaus
 
okay schon mal vielen Dank Sie haben mir sehr weiter geholfen allerdings funktioniert das mit * i nicht, da die Aufgabenstellung diese ist :
 

Anhänge

  • AufgabeBenzinpreisliste.png
    AufgabeBenzinpreisliste.png
    26,9 KB · Aufrufe: 21
Ich glaub ich bin Blind hab mich vertan, sorry :)
Jetzt hab ich aber ein anderes Problem, da ich den Wert immer Zwischenspeicher in
einLiter. Rechnet er das Ergebnis von davor * i
 

MarzAttak

Mitglied
VFL_Freak hatte schon gepostet:
Java:
System.out.println(i + " Liter kostet" + einLiter*i);
Lass dafür einLiter bei seinem Basiswert (mach am besten mit final eine Konstante draus). Bei diesem kleinen Programm kannst du eigentlich sogar auf eine Variable/Konstante verzichten und den Benzinpreis in die obige Zeile direkt einfügen. Allerdings ist es nach meinem Dafürhalten mit Konstante schöner, weil der Code lesbarer ist. Zahlen, deren Sinn man nicht sofort erkennt, direkt in den Code zu schreiben gilt als Bad Smell (schlechte Programmierpraxis). Man nennt solche Zahlen dann auch Magic Numbers.
 

Neue Themen


Oben