So zeigen Sie eine einfache hohle Sternchen Rechteck in der Konsole?
Könnte jemand mir raten, auf eine einfache Art und Weise zu implementieren hohlen Rechtecken in C#?
Ich in der Lage gewesen, ein einfaches Rechteck, sondern hohl Rechteck-Programme habe ich mir angeschaut entweder enthalten oder arrays oder waren ziemlich verworren. Zum Beispiel, die Lösung auf ein anderes forum das scheint zu anspruchsvoll, und diese Antwort auf CodeReview.SE ist zu schwer zu verstehen.
Dies ist, was ich getan habe, das zeigt eine einfache (gefülltes) Rechteck. , Wie die Ausgabe eines hohlen Rechtecks if
Logik, wenn möglich?
class Nested_Loops_Hollow_Rectangles
{
public void RunExercise()
{
//how are now supposed to make this hollow?
//columns are side by side, rows is number of top to bottom
//see tut
Console.WriteLine("Welcome to the HollowRectanglePrinter Program.");
Console.WriteLine("How many columns wide should the rectangle be?"); //i.e. 4
int iColMax, iRowMax;
string userChoiceC = Console.ReadLine();
Int32.TryParse(userChoiceC, out iColMax);
Console.WriteLine("How many rows tall should the rectangle be? "); //i.e. 4
string userChoiceR = Console.ReadLine();
Int32.TryParse(userChoiceR, out iRowMax);
Console.WriteLine("Here you go:");
if (iRowMax > 0 || iColMax > 0)
{
for (int iRow = 0; iRow < iRowMax; iRow++)
{
for (int iCol = 0; iCol < iColMax; iCol++)
{
Console.Write("*");
}
Console.WriteLine();
}
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den wesentlichen Teil Ihrer Anwendung reduziert werden kann zu:
Diese, durch die Art und Weise (Trennung der Logik und die Eingabe, indem Sie die Logik in eine eigene Methode) ist es, was Sie sollte tun. Sehen Trennung der Anliegen für weitere Informationen.
Vorherigen Methode zeichnet ein gefülltes Rechteck, so wie können Sie zeichnen eine hollow man?
Beginnen, die Ausgabe. Zum Beispiel, (5, 3), die Ausgabe ist:
und was Sie wollen, ist zu haben:
Wie Sie das tun können? Wahrscheinlich durch ersetzen die Sterne durch die Räume, in einigen Fällen. Welche?
Gut, noch einmal einen Blick auf die Ausgabe. Die erste Zeile ist unverändert, also der Zustand, in dem Sie Leerzeichen, verwenden Sie anstelle der Sterne ist begrenzt auf die Zeilen andere als die erste, das ist:
Nun müssen Sie auch die anderen Fälle in Ihrem Zustand: die erste Spalte und die Letzte Spalte und Zeile.
Zu kombinieren, um Bedingungen, die Sie verwenden können
&&
und||
Betreiber. Das erste bedeutet, dass die Bedingung ist wahr, wenn beide Operanden true sind, und die zweite bedeutet, dass entweder der erste oder der zweite operand wahr ist.Könnte es sein, dass Ihr endgültiger Zustand wird zu schwierig zu Lesen. Es gibt zwei Dinge, die Sie tun können. Das erste, was ist die Verwendung von intermediären Variablen. Zum Beispiel:
umgestaltet werden kann in:
ob es Sinn macht, sich neu zu formieren
a
mitb
undc
mitd
. Eine zweite Sache, die Sie tun können, ist, die Bedingung in einer separaten Methode, die möglicherweise verbessern die Lesbarkeit, wenn Ihr einen guten Namen für die Methode ein:Dies ist hoffentlich alles, was Sie tun müssen, ist die übung. Je nach Ihrem Lernfortschritt im Kurs, Sie können auch daran interessiert sein, diese Aspekte:
Können Sie vermeiden, sich wiederholenden code in eine
if/else
block, so dass anstelle von:können Sie am Ende schreiben nur
Write()
:Was C# - operator können Sie verwenden für das?
Es ist eine gute Praxis, eine Methode zum validieren Sie Ihre Eingaben, bevor Sie Ihre Arbeit tun. Wenn Sie bereits gelernt, was Ausnahmen sind, wie können Sie verwendet werden, um zu überprüfen
width
undheight
? Warum in der aktuellen situation kann es Sinn machen, zu nicht filter, negative und null-Werte (in anderen Worten, würde die Anwendung Abstürzen, wenn zum Beispielwidth
gleich-5
)?byte
stattint
fürwidth
undheight
?Fügen Sie eine einzige IF-Anweisung, wo Sie mit dem zeichnen der Zeichen:
Für mehr Spaß, eine variable Größe rechteckige "Loch" in das Rechteck.