Hallo liebe Community, bin neu hier und hab folgendes Problem.
Ich soll mehrere Methoden mit arrays in einer klasse erstellen.
Die erste Methode soll die Summer der eingegebenen Werten ausgeben.
Ich scheitere aber daran, dass der Compiler nicht läuft. Bei Eclipse steht neben der sum Methode: "This method must return a result of type int"
Naja hier erstmal der Code:
Java:
publicclassArray{publicstaticvoid main (String[] args){int[] a ={-1,2,4,6,-5};sum(a);}publicstaticintsum(int[] a){//This method must return a result of type intint sum =0;for(int zaehler=0;zaehler<a.length;zaehler++)
sum+=a[zaehler];System.out.println(sum);}}
Kann mir da jemand sagen was nicht so ganz passt? Vielen Dank
Du hast keinen Rückgabe Wert.
Das was du bei System.out.println in der klammert hat, muss einfach hinter ein return
Also in die letzte Teile deiner Methode
return sum;
Dankeschön, aber jetzt bekomme ich bei println() die Meldung "unreachable code"
sieht dann jetzt so bei mir aus.
Java:
publicclassArray{publicstaticvoid main (String[] args){int[] a ={-1,2,4,6,-5};sum(a);}publicstaticintsum(int[] a){//This method must return a result of type intint sum =0;for(int zaehler=0;zaehler<a.length;zaehler++)
sum+=a[zaehler];return sum;System.out.println(sum);}}
Hab jetzt aber bei der zweiten Methode wieder das Problem mit dem Rüchgabewert, obwohl ich diesmal einen return drin hab :bahnhof:
Es soll übrigens die Differenz zwischen dem kleinsten und dem größten Element im Array angezeigt werden. Also Differenz zwischen -5 und 6 sind 11.
Hier der teilcode ohne die sum-Methode von oben Code:
Java:
publicclassArray{publicstaticvoid main (String[] args){int[] a ={-1,2,4,6,-5};sum(a);range(a);}publicstaticintrange(int[] a){int min =0;int max =0;int range;for(int index1 =0; index1 < a.length; index1++)if(a[index1]< min){
min = a[index1];for(int index2 =0; index2 < a.length;index2++)if(a[index2]> max){
max = a[index2];
range = max - min;System.out.println(range);return range;}}}}
Okay, ich sollte lieber selbst mal mehr schauen, hatte da noch eckige klammern drin die da nicht hingehörten und hab die rausgenommen, jetzt funktionierts.
Servus, dieses Return wird nur angesprungen, wenn die Bedingung element2 > max zutrifft; für alle anderen Fälle, hat die Methode kein Return.
Du kannst es entweder so machen wie ich: eine Exception werfen (ist jetzt nur Beispielhaft, funktioniert aber)
oder einen definierten Wert zurückgeben - return 0 oder return null.
Das solltest du aber in der Methodenbeschreibung angeben, dass bei falscher Benutzung (also die Werte sind unsinnig) ein definiertes Ergebnis geliefert wird
Java:
packagede.nysie;publicclassArray{publicstaticvoidmain(String[] args){int[] a ={-1,2,4,6,-5};try{range(a);}catch(Exception e){System.out.println(e.getMessage());}}/**
* Wirft eine Exception, wenn ...?
**/publicstaticintrange(int[] a)throwsException{int min =0;int max =0;int range;for(int element : a){if(element < min){
min = element;for(int element2 : a){if(element2 > max){
max = element2;
range = max - min;System.out.println(range);// dieses Return wird nur angesprungen, wenn die// Bedingung element2 > max zutrifft// für alle anderen Fälle, hat die Methode kein Return.return range;}}}}thrownewException("Fehler");}}