Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen

HeiTim

Mitglied
Hallo erstmal,
ich versuche die ganze zeit eine Lösung zu finden komme aber nicht drauf , ich hoffe ihr könnt mir weiter helfen die Aufgabenstellung lautet:

Sie wollen mit einem Java-Programm ein nummeriertes Feld in der folgenden Form (hier Größe = 8) auf den Bildschirm ausgeben:



1 2 3 4 5 6 7 8
2 3 4 5 6 7 8 9
3 4 5 6 7 8 9 10
4 5 6 7 8 9 10 11
5 6 7 8 9 10 11 12
6 7 8 9 10 11 12 13
7 8 9 10 11 12 13 14
8 9 10 11 12 13 14 15


Die Größe des Feldes soll variabel sein, wobei die Breite der Höhe entspricht. Ein Feld der Größe 2 sähe folgendermaßen aus:



1 2
2 3
(Achtung: in der ersten Spalte der beiden Beispiele stehen Leerzeichen.)

Ihr Programm soll für alle Feldgrößen von 1 bis 20 fehlerfrei arbeiten.
Achten Sie exakt auf die Positionierung der Leerzeichen zwischen den Zahlen.
Die Zahlen sollen, so wie im Beispiel, in den Spalten exakt untereinander stehen.

In dieser Aufgabe ist der Methodenkopf bereits vorgegeben. Vervollständigen Sie die Methode, die als Parameter die Feldgröße (Seitenlänge des Zahlenfeldes) erhält und die entsprechende Ausgabe erzeugt.
Nutzen Sie dafür eine geschachtelte for-Schleife.

Ps: Danke im Voraus
 
Schaffst du es denn die erste Zeile auszugeben?

Wie oft musst du diese Ausgabe (einer Zeile) untereinander machen und was unterscheidet die Zeilen?
 
mir fehlt der Ansatz also ich habe auch versucht überall im Internet es zu finden aber nichts ansatzweise gefunden.
also ich habe es so verstanden, dass ich es so ausgeben muss:
1

12
34

123
234
345

1234
2345
3456
4567

und dass, bis 20.

also wie gesagt mir fehlt der Ansatz dafür, ich habs schon mit Google und YouTube versucht und das ohne Erfolg.
 
Ja mittlerweile habe ich es geschafft die erste Zeile auszugeben nun Weiß ich aber nicht wie ich die anderen zeilen drunter angeben soll es kommt immer ein Fehler dabei raus, ich habe versucht bei der dritten Zeile also wo steht schreibeZahlenfeld() hab ich versucht einfach 2,3,4 undsoweiter einzufügen und drunter einzufügen aber das funktioniert so nicht vielleicht hab ich ja ein riesen Denkfehler den ihr findet
liebe Grüß :

public class Zahlenfeld
{
public static void main (String[] args, int feldGroesse)
{
schreibeZahlenfeld(1);
}

public static void schreibeZahlenfeld(int feldGroesse)
{
int maxTab = (feldGroesse + "").length() + 1;
for (int y = 1; y <= feldGroesse; y++) {
for (int x = y; x < feldGroesse + y; x++) {
System.out.print(getTab(x, maxTab) + x);
}
System.out.println();
}
}

public static String getTab(int x, int maxTab) {
String tab = "";
for (int i = 0; i < maxTab - (x + "").length(); i++)
tab += " ";
return tab;
}
}
 
Die main Methode darfst du nicht verändern. Keine neuen Parameter mit übergeben.
Schaue dir an wie die Methode in einem Standart Projekt ausschaut.
 
Die main Methode darfst du nicht verändern. Keine neuen Parameter mit übergeben.
Schaue dir an wie die Methode in einem Standart Projekt ausschaut.
tut mir leid ich hab jetzt nicht ganz verstanden was ich nun falsch mache also sobald ich ins "schreibeZahlenfeld()" eine belibige zahl eingebe kommt es auch raus nun muss ich aber das mit 1,2,3,4 bis 20 machen in einer klasse und weiss ich wie ich das machen soll
 
ja, das Problem ist aber das es einer Art Test ist und wenn ich die 20 eingebe kommt es als Fehler und zeigt mir wie es erwartet wird, und das soll halt so sein wie oben beschrieben.

1

12
34

123
234
345

1234
2345
3456
4567
 
OK, das sehe ich in den beschriebenen Anforderungen zwar nicht, aber wenn der Test es so will...

Dann musst Du Deinen Methodenaufruf eben in eine Schleife packen.
 
Java:
final int maximaleGroesse = 20;
for (int groesse = 1; groesse <= maximaleGroesse; groesse++) {
    schreibeZahlenfeld(groesse);
}
(Die Variable maximaleGroesse bräuchte man hier nicht, aber da ich eine Vorahnung habe, wie es weitergeht, ... 🙂 )
 
Super ich danke euch allen ich Habs endlich geschafft die Lösung gebe ich hier an für den nächsten Anfänger wenn's in Ordnung ist
liebe Grüße.

public class Zahlenfeld
{
public static void main (String[] args,int feldGroesse)
{
final int maximaleGroesse = 20;
schreibeZahlenfeld(feldGroesse);
}

public static void schreibeZahlenfeld(int feldGroesse)
{
int maxTab = (1 + "").length() + 1;
for (int y = 1; y <= feldGroesse; y++) {
for (int x = y; x < feldGroesse + y; x++) {
if (x == y) {
if (x < 10)
System.out.print(" " + x);
else
System.out.print(x);
}
else
System.out.print(getTab(x, maxTab) + x);
}
System.out.println();
}
}

public static String getTab(int x, int maxTab) {
String tab = " ";
for (int i = 0; i < maxTab - (x + "").length(); i++)
tab += " ";
return tab;
}
}
 
Habs endlich geschafft
Vermutlich nicht ganz: die main-Methode darf außer dem String[] args keine weiteren Parameter besitzen, wenn sie beim Start des Programms von der JVM aufgerufen werden soll.

Ausnahme: ihr habt die Methode so vorgegeben bekommen und sie wird von einem anderen Programmteil in der Form aufgerufen.
 

Neue Themen


Zurück
Oben