Java :: Aufgabe #13 :: Lösung #1
3 Lösungen

#13
Zahlenfolge berechnen und fortsetzen
Anfänger - Java
von pocki
- 24.11.2012 um 19:50 Uhr
Es soll eine Zahlenfolge wiefolgt berechnet werden:
Die nacheinander folgenden gleichen Zahlen werden gezählt und zusammen mit der Zahl ausgegeben.
Aus der neu berechneten Zahlenfolge errechnet sich die nächste.
Beispiel:
1. Folge: 112
2. Folge: 2112 (2 Einser und 1 Zweier)
3. Folge: 122112 (1 Zweier, 2 Einser, und 1 Zweier)
usw.
Es soll nun mit dieser ersten Folge startend die 15. Folge berechnet und ausgegeben werden.
Wenn mehrstellige Zahlen vorkommen sind diese gleich auszugeben. Bsp: 12 Einser = 121
Die nacheinander folgenden gleichen Zahlen werden gezählt und zusammen mit der Zahl ausgegeben.
Aus der neu berechneten Zahlenfolge errechnet sich die nächste.
Beispiel:
1. Folge: 112
2. Folge: 2112 (2 Einser und 1 Zweier)
3. Folge: 122112 (1 Zweier, 2 Einser, und 1 Zweier)
usw.
Es soll nun mit dieser ersten Folge startend die 15. Folge berechnet und ausgegeben werden.
Wenn mehrstellige Zahlen vorkommen sind diese gleich auszugeben. Bsp: 12 Einser = 121
#1

von 0 (0 Punkte)
- 20.08.2013 um 23:30 Uhr
Main.java
Java-Code

package de.trainyourprogrammer.java13; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * Calculate the 15th step with the following pattern: * * 1.) 112 2.) 2112 3.) 122112 ... * * @author jsb */ public class Main { /** * Execute the program. * * @param args * Is ignored in our case. */ public static void main(String[] args) { String input = ""; System.out.println("Geben Sie eine Folge ein:"); // print the request BufferedReader buffer = new BufferedReader(new InputStreamReader( System.in)); // start reading from the default input try { // try to... input = buffer.readLine(); } catch (IOException e) { // ignore occurring IOExceptions } finally { // on quit... try { // try to... buffer.close(); // stop reading the input } catch (IOException e) { // again ignore occurring IOExceptions } } String out = getNext(input); // get the row for the input for (int counter = 0; counter < 15; counter++) { System.out.println(out); // print the row out = getNext(out); // get the next row } } /** * Helper method to get the next row of a given String. * * @param row * The String to get the row from. * * @return The next row. */ private static String getNext(String row) { String result = ""; // initialise the result char current; // initialise the char storing the currently counted digit try { current = row.toCharArray()[0]; // set the current digit to the // first // digit of the former row } catch (ArrayIndexOutOfBoundsException e) { current = 0; // if that fails set the current digit to null } int counter = 0; // initialise the counter for (char digit : row.toCharArray()) { // for every char in the row... if (digit != current) { // check if the digit is still the same result = result + Integer.toString(counter) + current; // append // to // result current = digit; // set the next digit counter = 1; // reset the counter } else { // else... counter++; // increase the counter } } return result + Integer.toString(counter) + current; // return the // result } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1