Denksportaufgabe

Status
Nicht offen für weitere Antworten.

Ice2b

Mitglied
Hallo zusammen,

anbei eine Problemstellung an der ich heute ein wenig zu kanbbern hatte, bevor ich eine unschöne Lösung gefunden habe.

Zuerst interessiert es mich, ob und wie ihr das löst. Anschließend gebe ich meine Lösung preis.

Code:
public class Reiskorn {

	/**
	 * @param args
	 */
	public static void main(String[] args)
	  throws java.io.IOException	{
		int i;
		long sum;
		char ende = ' ';
		
		System.out.println("Jeden Tag verdoppelt wir den Betrag, " +
				           "gestartet wird mit einem Cent...");
		System.out.println("Enter = nächster Tag, S + Enter für beenden.");	
		
		
		for (sum=1, i=1;  ende != 'S';  sum = (sum * 2), i++) 
		{
			System.out.println("Die Summe nach " + i + " Tagen lautet " + sum + " Cents oder " + (double)sum/100 + " Euro");
			ende = (char)System.in.read();
		}
		
	}

}

Die Ausgabe sieht wie folgt aus (2 Ausgaben pro "Return"):

Jeden Tag verdoppelt wir den Betrag, gestartet wird mit einem Cent...
Enter = nächster Tag, S + Enter für beenden.
Die Summe nach 1 Tagen lautet 1 Cents oder 0.01 Euro

Die Summe nach 2 Tagen lautet 2 Cents oder 0.02 Euro
Die Summe nach 3 Tagen lautet 4 Cents oder 0.04 Euro

Die Summe nach 4 Tagen lautet 8 Cents oder 0.08 Euro
Die Summe nach 5 Tagen lautet 16 Cents oder 0.16 Euro

und soll so aussehen:

Jeden Tag verdoppelt wir den Betrag, gestartet wird mit einem Cent...
Enter = nächster Tag, S + Enter für beenden.
Die Summe nach 1 Tagen lautet 1 Cents oder 0.01 Euro

Die Summe nach 2 Tagen lautet 2 Cents oder 0.02 Euro

Die Summe nach 3 Tagen lautet 4 Cents oder 0.04 Euro

Die Summe nach 4 Tagen lautet 8 Cents oder 0.08 Euro

Die Summe nach 5 Tagen lautet 16 Cents oder 0.16 Euro
 
S

SlaterB

Gast
die Denksportaufgabe besteht aus dem richtigen Einlesen eines 'Enter'?
na supi, richtig spannend ;)
verwende Scanner oder BufferedReader
 

Ice2b

Mitglied
Ich habe die Aufgabe so 1:1 aus einem Lernbuch übernommen.

Wie sähe deine Lösund dann aus? Ich kenne beide varianten noch nicht.

Übrigends: Meine wirklich unschöne Lösung:


Code:
      for (sum=1, i=1;  ende != 'S';  sum = (sum * 2), i++) 
      { 
         System.out.println("Die Summe nach " + i + " Tagen lautet " + sum + " Cents oder " + (double)sum/100 + " Euro"); 
         ende = (char)System.in.read(); 
         ende = (char)System.in.read(); 

      }
 
S

SlaterB

Gast
BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
String ende = "";

!"S".equals(ende)

ende = b.readLine();
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben