Keine Ausgabe .. Woran liegt das? Ich komme nicht weiter

Hallo Leute, ich arbeite daran ein nummeriertes Feld in der folgenden Form (hier Größe = 8) auf den Bildschirm auszugeben:

Methodenkopf war bereits vorgegebenund ich sollte Methode vervollständigen. Als Parameter soll diese die Feldgröße (Seitenlänge des Zahlenfeldes) erhalten und die entsprechende Ausgabe erzeugen und die geschachtelte for-schleife benutzt werden.

Die Aufgabe sah so aus:
Java:
public class Zahlenfeld
{
  public static void main (String[] args, int feldGroesse)
  {
      schreibeZahlenfeld(feldGroesse);
  }
 
  public static void schreibeZahlenfeld(int feldGroesse)
  {
      // Hier sollte meinProgramm stehen.
  }
}

Ausgabe soll so aussehen ein Zahlenfeld
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




Ich habe mein Programm in der main Methode mit System.out.print ausgegeben und so läuft es und ich kriege die Ausgabe aber ich kriege keine Ausgabe mit dieser Methode. Ich verstehe nicht wo das Problem liegt vielleicht kann mir jemand unter die Arme greifen? Ich wäre so froh wenn einer mir weiterhelfen könnte.

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

     
      public static int schreibeZahlenfeld(int feldGroesse){
         
         
            for (int i =0; i <8; i ++){
                 
                for (int j=i +1; j < i  + 9; j++){
                    if(j>9) {
                       
                 
                        System.out.print(j+" ");
                    }
                    else{
                       
                    System.out.print(" " +j+ " ");
                       
        }
                }
                System.out.println();
                       
              }
       
       
           
                   
                 
               
            return feldGroesse ;
      }
    }// Hier sollte Ihr Programm stehen.
  }
}
 
Zuletzt bearbeitet von einem Moderator:
Du kannst/darfst nicht einfach die Signatur der main-Methode verändern. Die Parameterliste besteht immer nur aus `String[] args`, was die Kommandozeilenargumente sind. Wenn du dein Programm über java -jar foo.jar 1 bla aufrufst, dann würde in args[0] = 1 und in args[1] = bla stehen.
 
  • Like
Reactions: Bjm
Benötigst du das Int feldGroesse? Ansonsten kannst du es aus den Methoden streichen und das return entfernen, dann setzt du die Methode schreibeZahlenfeld statt "int" auf "void". Zudem kannst du die 2 letzten geschweiften Klammern entfernen, da die aktuell nutzlos sind. Wenn du das Programm der Beschreibung entsprechend abänderst solltest du die erwünschte Ausgabe erhalten.

Soweit ich weiß darfst/kannst du in der main methode auch keine parameter einfügen. (Sofern ich hier falsch liegen sollte korrigiert mich bitte)

Hoffe ich konnte helfen.
 
  • Like
Reactions: Bjm
Benötigst du das Int feldGroesse? Ansonsten kannst du es aus den Methoden streichen und das return entfernen, dann setzt du die Methode schreibeZahlenfeld statt "int" auf "void". Zudem kannst du die 2 letzten geschweiften Klammern entfernen, da die aktuell nutzlos sind. Wenn du das Programm der Beschreibung entsprechend abänderst solltest du die erwünschte Ausgabe erhalten.

Soweit ich weiß darfst/kannst du in der main methode auch keine parameter einfügen. (Sofern ich hier falsch liegen sollte korrigiert mich bitte)

Hoffe ich konnte helfen.
Ja genau ich benötige Int feldGroesse, wenn es dir keine Umstände bereiten würde könntest du mir das eben veranschaulichen?
Vielen Dank für deine Hilfe übrigens.
 
Du kannst/darfst nicht einfach die Signatur der main-Methode verändern. Die Parameterliste besteht immer nur aus `String[] args`, was die Kommandozeilenargumente sind. Wenn du dein Programm über java -jar foo.jar 1 bla aufrufst, dann würde in args[0] = 1 und in args[1] = bla stehen.
Naiv gesehen ändert man den Code an zwei Stellen (main-Methode, Aufruf der Methode mit Parameter) und erhält folgendes Ergebnis: Anhang anzeigen 12585
Oh Mann ich fasse es nicht, du bist soooo toll!! Ich kann zwar grad den Code nicht ausführen aber freu mich gleich wenn ich Zuhause bin es zu tun. Dankee Danke
 
Naiv gesehen ändert man den Code an zwei Stellen (main-Methode, Aufruf der Methode mit Parameter) und erhält folgendes Ergebnis: Anhang anzeigen 12585
Ach Nein schau mal ich bekomme diesen Syntaxfehler

__tester__.java:35: error: incompatible types: unexpected return value
return feldGroesse ;
^
__tester__.java:48: error: method main in class Zahlenfeld cannot be applied to given types;
Zahlenfeld.main(null, 1);
^
required: String[]
found: <null>,int
reason: actual and formal argument lists differ in length
2 error
 
schau mal ich bekomme diesen Syntaxfehler
Und was wurde zwischenzeitlich am Code geändert ?
Aber wie es aussieht wurde die Signatur der main-Methode nicht geändert und "int" bei "schreibeZahlenfeld" auf "void" umgestellt.
Das funktioniert vergleichsweise auch:
Java:
package zahlenfeld;
public class Zahlenfeld {
public static void main(String[] args) {
        schreibeZahlenfeld(8);
    }
   public static void schreibeZahlenfeld(int feldGroesse){
          for (int i =0; i <8; i ++){
                  for (int j=i +1; j < i  + 9; j++){
                    if(j>9) {
                        System.out.print(j+" ");
                    }
                    else{
                        System.out.print(" " +j+ " ");
                        }
                }
                System.out.println();
                        }
        //return feldGroesse ;
      }
    }// Hier sollte Ihr Programm stehen.
 
Wie produzierst du diese Fehler? Habe grad ein wenig mit dem code rumgespielt und es nicht geschafft den Error zu reproduzieren.

Habe mir nebenbei noch ein wenig den Code angeschaut und getestet, jedoch müsste er einwandfrei funktionieren, wenn du die main methode korrigierst und für dein "int feldGroesse" einen Wert angibst, welcher zurückgegeben werden kann.

Java:
    int feldGroesse = 0;
      schreibeZahlenfeld(feldGroesse);
      //oder
      schreibeZahlenfeld(0);
Jedoch sehe ich nicht den Sinn darin die Methode etwas zurückgeben zu lassen, wenn damit eh nicht gearbeitet wird.
 
Dein Code wird vermutlich in irgendeinem System automatisiert getestet, und daher ist eine Methode mit der Signatur main (String[] args, int feldGroesse) benötigt. Das ist nicht die übliche Main-Methode (die kann man wenn nötig zusätzlich hinzufügen), wird aber offensichtlich für das Test-System benötigt.

Behalt also die Signaturen bei, die du ganz oben schon gepostet hast, und versuch nicht die anzupassen.
 
Dein Code wird vermutlich in irgendeinem System automatisiert getestet, und daher ist eine Methode mit der Signatur main (String[] args, int feldGroesse) benötigt. Das ist nicht die übliche Main-Methode (die kann man wenn nötig zusätzlich hinzufügen), wird aber offensichtlich für das Test-System benötigt.

Behalt also die Signaturen bei, die du ganz oben schon gepostet hast, und versuch nicht die anzupassen.
Ja genau so ist das wie muss ich dann umstrukturieren damit es im endeffekt dann läuft? Ich habe kein Überblick mehr:rolleyes:o_O
 
Wie produzierst du diese Fehler? Habe grad ein wenig mit dem code rumgespielt und es nicht geschafft den Error zu reproduzieren.

Habe mir nebenbei noch ein wenig den Code angeschaut und getestet, jedoch müsste er einwandfrei funktionieren, wenn du die main methode korrigierst und für dein "int feldGroesse" einen Wert angibst, welcher zurückgegeben werden kann.

Java:
    int feldGroesse = 0;
      schreibeZahlenfeld(feldGroesse);
      //oder
      schreibeZahlenfeld(0);
Jedoch sehe ich nicht den Sinn darin die Methode etwas zurückgeben zu lassen, wenn damit eh nicht gearbeitet wird.
ja weil es automatisiert getestet wird und ich für das Test-System
Code:
public class Zahlenfeld
{
  public static void main (String[] args, int feldGroesse)
  {
      schreibeZahlenfeld(feldGroesse);
  }

  public static void schreibeZahlenfeld(int feldGroesse)
  {
      // Hier sollte meinProgramm stehen.
  }
}
dieses einhalten soll aber damit funktioniert einfach garnichts. Hier habe ich mal ein Bildschirm Foto zur veranschaulichung wie es bei mir aussieht.
 

Anhänge

Du kannst/darfst nicht einfach die Signatur der main-Methode verändern. Die Parameterliste besteht immer nur aus `String[] args`, was die Kommandozeilenargumente sind. Wenn du dein Programm über java -jar foo.jar 1 bla aufrufst, dann würde in args[0] = 1 und in args[1] = bla stehen.
ja ich verstehe dich weiß aber gar nicht wie ich es anders lösen soll...:oops:
 
...naiv gesehen will (u.a.)
Code:
public class Zahlenfeld {
public static void main(String[] args, int feldGroesse)) {
        //nix
    }
public static void main(String[] args) {schreibeZahlenfeld(8);}
   public static void schreibeZahlenfeld(int feldGroesse){   //usw...
eingefügt werden. Zumindest derart, dass das Testsystem grünes Licht gibt.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben