Kasten aus Sternen

06/05/2012 11:45 Whoknowsit#1
Moin,

ich hab hier eine typische Schulaufgabe vorliegen: In Java ein Rechteck aus Sternchen zeichnen und ausgeben lassen. So weit auch kein Problem:

Code:
        for (int i = 0; i < hoehe; i++) {
            System.out.print(i);
            for (int j = 0; j < breite - 2; j++) {
                System.out.print(" " + j);
            }
            System.out.println(" " + i);
        }
Jetzt aber folgendes: Um ein Rechteck, gefüllt mit Smileys soll ein Rahmen angezeigt werden.

Irgendwie stelle ich mich nur gerade extrem blöd an und kriege es nicht auf die Kette. Irgendwer einen Vorschlag? :handsdown:
06/05/2012 13:52 xNopex#2
Ich würde es in drei Teile untergliedern.

Teil1: Obere waagerechte Linie des Rahmens malen.
Teil2: hoehe-2 waagerechte Zeilen ausgeben, bestehend aus dem linken Teil des Randes + breite-2 Smileys + Rechter Teil des Randes
Teil3: Untere waagerechte Linie des Rahmen ausgeben lassen.

Genügt das als Vorschlag?
06/05/2012 14:13 boxxiebabee#3
Code:
using System;

namespace ConsoleApplication
{
    internal class Program
    {
        private static void Main()
        {
            const int hoehe = 5;
            const int breite = 5;

            for (int i = 0; i < hoehe; i++)
            {
                for (int x = 0; x < breite; x++)
                {
                    switch (i)
                    {
                        case hoehe - 1:
                        case 0:
                            switch (x)
                            {
                                case 0:
                                    Console.Write(i == hoehe - 1 ? " 3" : " 1");
                                    break;
                                case breite - 1:
                                    Console.Write(i == hoehe - 1 ? " 4" : " 2");
                                    break;
                                default:
                                    Console.Write(" a");
                                    break;
                            }
                            break;
                        default:
                            switch (x)
                            {
                                case breite - 1:
                                case 0:
                                    Console.Write(" b");
                                    break;
                                default:
                                    Console.Write(" 0");
                                    break;
                            }
                            break;
                    }
                }
                Console.Write("\n");
            }
            Console.Read();
        }
    }
}
Ist zwar in C#, solltest aber recht leicht übersetzen können. :>
06/05/2012 17:39 Whoknowsit#4
Ach Gott... Na klar! Vielen Dank für den Denkanstoß :) Für den Fall, dass es wen interessiert (wovon ich jetzt mal nicht ausgehe ^^):

Code:
        for (int i = 0; i < hoehe; i++) {
            for (int j = 0; j < breite; j++) {
                if(i == (hoehe-1) || i == 0) {
                    if(j == 0) {
                        System.out.print(i == (hoehe-1) ? " \u2514" : " \u250C");
                    } else if(j == breite-1) {
                        System.out.print(i == (hoehe-1) ? " \u2518" : " \u2510");
                    } else {
                        System.out.print(" \u2500");
                    }
                } else {
                    if(j == 0 || j == (breite-1)) {
                        System.out.print(" \u2502");
                    } else {
                        System.out.print(" \u263A");
                    }
                }
            }
            
            System.out.print("\n");
        }