Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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:
public class Array {
public static void main (String[] args){
int[] a = {-1,2,4,6,-5};
sum(a);
}
public static int sum(int[] a) { //This method must return a result of type int
int 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:
public class Array {
public static void main (String[] args){
int[] a = {-1,2,4,6,-5};
sum(a);
}
public static int sum(int[] a) { //This method must return a result of type int
int 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:
public class Array
{
public static void main (String[] args)
{
int[] a = {-1,2,4,6,-5};
sum(a);
range(a);
}
public static int range(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:
package de.nysie;
public class Array {
public static void main(String[] args) {
int[] a = { -1, 2, 4, 6, -5 };
try {
range(a);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
/**
* Wirft eine Exception, wenn ...?
**/
public static int range(int[] a) throws Exception {
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;
}
}
}
}
throw new Exception("Fehler");
}
}