Compiler-Fehler [Aufgabe] Korrigiere folgenden Code

Sacrety

Mitglied
Hallo zusammen

Ich soll folgenden Code berichtigen.

Code:
public class Fehler1 {
   public void gelb (){
     i = 0;
     while (i <10){
       String s += " Gelb ";
     }
     return s;
   }

   private int rot(k){
     for ( int i=0; i<k; i ++){
       if(i<k/2) if(i%2 == 0)
         System .out . println (i + " ist gerade und kleiner als " + k /2);
       else System .out . println (i + " ist groesser als " + k /2);
     }
   }
   
   public static void main ( String [] args ){
     System .out . println ( gelb ();)
     rot (14);
   }

}

Und soweit habe ich ihn korrigiert aber bekomme immer einen Compiler Fehler wegen dem return statement bei Methode rot(k).

Code:
public class Aufgabe15 {

   public static String gelb (){
     String s = "Gelb";
       return s;
     
   }
   
   public static String rot(int k){
     
     for (int i=0; i<k; i++){
       if ((i%2 == 0) && i < k/2) {
         System.out.println (i + " ist gerade und kleiner als " + k /2);
       } else {
         System.out.println (i + " ist groesser als " + k /2);
       }
     }   
   }   return k;

   public static void main ( String [] args ){
     System.out.println(gelb());
     System.out.println(rot(15));
   }
}

Danke für eure Aufmerksamkeit und Hilfe.

MfG Nico
 
Das passt ja auch nicht. Du sagst rot soll einen String zurückliefern. beim return steht aber ein int. Aber dein Compiler müsste dir doch genau das gesagt haben oder ? Ich vermute mal du meintest public static void rot(int k) und das return unten lässt du einfach weg.
 
Deinen Vorschlag mit void rot(int k) hatte ich auch schon ausprobiert, da sagt er aber zuerst:
java:22: error: 'void' type not allowed here
System.out.println(rot(15));

Wenn statt rot(15); schreibe rot();
required : int
found no arguments
actual and formal argument lists differ in length

Wenn ich versuche die Methode als "public static int rot(int k)" zu definieren mit return k; vor dem ende des Methodenblocks dann sagt er:

return k;
illegal start of type
';' expected

Ich komme da einfach nich weiter.

Grüße
 
ich hatte das so gelöst und es klappt 🙂

Java:
public class Aufgabe1_5 {
    public static String gelb() {
        int i = 0;
        String s = "";
        while( i < 10) {
            s+= "Gelb";
            i++;
        } return s;
    }
   
    public static void rot (int k) {
   
        for (int i = 0; i < k; i++) {
            if( i < (k/2)) {
                 if ( i %2 == 0 ) {
                    System.out.println( i + "ist gerade und kleiner als" + k/2);
                }
            } else {
                 System.out.println( i + " ist größer als " + k/2);
                   
            }       
        } 
    }
   
    public static void main (String[] args) {
        System.out.println (gelb());
        rot(14);
    }
}
 
Danke Hannek92, ich werd mir den code und die ausgaben dann noch einmal jetzt in ruhe anschauen.

Danke sehr
 
Zuletzt bearbeitet:
Ist die Methode gelb() nicht eigentlich überflüssig? Das i in gelb() hat ja nichts mit dem i in rot() zutun

Wozu dann die schleife und das s+= "gelb"; ? eigentlich würde auch einfach reichen String s = "Gelb"; irgendwo zu deklarieren? ich versteh den Sinn der methode gelb nich
 
Das i in Gelb und das i in rot() haben wirklich nichts miteinander zu tun.
Gelb() soll einfach das wort gelb sooft ausgeben, wie i kleiner 10 ist. also musst du i mit 0 initialisieren und danach hochzählen lassen.
String s = Gelb würde gelb nur einmal ausgeben, und halt nicht die 10 mal. Und damit du s nicht immer wieder überschreibst, musst du s+= gelb setzen, damit dann auch wirklich "gelb" an "gelb" im String s dran gepackt wird .. und das 10 mal, damit deine Ausgabe den String s mit zehn mal dem wort gelb drinnen hält.
 
Auch wenn es schon gelöst wurde:
Code:
   public static String rot(int k){
   
     for (int i=0; i<k; i++){
       if ((i%2 == 0) && i < k/2) {
         System.out.println (i + " ist gerade und kleiner als " + k /2);
       } else {
         System.out.println (i + " ist groesser als " + k /2);
       }
     }
   }   return k;

return k; muss vor der letzten Klammer stehen, sonst befindet es sich außerhalb der Funktion rot(int).

Code:
   public static String rot(int k){
  
     for (int i=0; i<k; i++){
       if ((i%2 == 0) && i < k/2) {
         System.out.println (i + " ist gerade und kleiner als " + k /2);
       } else {
         System.out.println (i + " ist groesser als " + k /2);
       }
     }
     return k;
   }

Gruß Blackswan
 

Neue Themen


Zurück
Oben