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));
}
}
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:
publicclassAufgabe1_5{publicstaticStringgelb(){int i =0;String s ="";while( i <10){
s+="Gelb";
i++;}return s;}publicstaticvoid 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);}}}publicstaticvoid main (String[] args){System.out.println (gelb());rot(14);}}
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.
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;
}