Diamanten-Variationen

Wyatt

Erfahrenes Mitglied
Hallo!

Ich hab via Schleifen die Form eines Diamanten nachgestellt... zumindest soll es einen darstellen.
Nun wollte ich mal fragen, wie Ihr vorgegangen wäret? Welche Formeln Ihr benutzt hättet?
Was hättet Ihr generell anders gemacht?
Wenn möglich mit Code :)

Mein Code:
Java:
public String getDiamond(int x){
	String dmd = "";

	for(int i=0; i<x; i++){
	    if(i < ((x+1)/2)){
	        for(int z=0; z<(x/2-i); z++)
	            dmd += " ";
	        for(int k=0; k<(i*2+1); k++)
	            dmd += "*";
		}
	    else {
	        for(int z=0; z<(i-(x+1)/2+1); z++)
	            dmd += " ";
	        for(int k=0; k<(x*2-i*2-1); k++)
	            dmd += "*";
		}
	    dmd += "\n";
	}
	return dmd;
}

Rauskommen sollte in etwa solch ein Gebilde:
Code:
    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *


Danke & Grüße
Felix
 
Zuletzt bearbeitet:

Thomas Darimont

Erfahrenes Mitglied
Hallo,

schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

import java.util.Arrays;

/**
 * @author Tom
 */
public class DiamondExample {
    public static void main(String[] args) {
        printDiamond(50);
    }

    private static void printDiamond(int n) {
        int middleRowStarCount = n % 2 == 1 ? n : n +1;
        for (int i = 0; i < middleRowStarCount; i++) {
            System.out.print(charTimes(' ',     Math.abs( middleRowStarCount / 2 - i )));
            System.out.print(charTimes('*', 2 * Math.abs( Math.min (i,(middleRowStarCount - i - 1))) + 1));
            System.out.println();
        }
    }

    static String charTimes(char c, int n) {
        char[] chars = new char[n];
        Arrays.fill(chars, c);
        return String.valueOf(chars);
    }
}

Gruß Tom