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.
Im Gegensatz zu meinem vorigen Thread "Warum funzt Prozedur nicht" weiß ich jetzt schon mehr über Funktionen/Methoden.
In meinem Programm müssen öfters Variablen vertauscht werden, also hab ich - ich bin ja nicht blöd - eine Methode gemacht, die wie folgt aussieht:
[HIGHLIGHT=Java]public class ExampleThree {
public static int swap (int a, int b) {
int help;
help = a;
a = b;
b = help;
return a; return b;
}
//[...]Noch andere Funzen
public static void main (String[] args) {
[...]Code[...]
swap(sum1, sum2);
[...]Code[...]
}
}[/HIGHLIGHT]
Nun sollen beide Variablen zurückgegeben werden, da ja beide einen neuen Wert zugewiesen bekommen, jedoch erhalte ich beim zweiten return einen unreachable statement Fehler.
Was tun, damit beide Variablen zurückgegeben werden?
Nun sollen beide Variablen zurückgegeben werden, da ja beide einen neuen Wert zugewiesen bekommen, jedoch erhalte ich beim zweiten return einen unreachable statement Fehler.
Ich wollte nur darauf hinweisen, dass wenn du in einer deiner Methoden an irgendeiner Stelle "return" aufrufst, verlässt du die Methode. Darum der: unreachable statement Fehler
public class IntPair{
private int i1, i2;
public IntPair(int i1, int i2){
this.i1 = i1;
this.i2 = i2;
}
// entweder 2 getter oder einen, der switcht (zB 1->i1, 2->i2 o.ä.)
}
Java:
public static IntPair swap (int a, int b) {
return new IntPair(b,a);
}
Au ja. Und dann schießen wir noch mit der generischen Kanone drauf, da erwischen wir jeden Spatz. Müssen wir bei den primitiven Typen zwar etwas um uns boxen, aber egal.
Java:
class Pair<T> {
private T v1, v2;
public Pair(T v1, T v2) {
this.v1 = v1;
this.v2 = v2;
}
public static <T> Pair<T> swap(T v1, T v2) {
return new Pair<T>(v2, v1);
}
@Override
public String toString() {
return String.format("[v1:%s v2:%s]", v1.toString(), v2.toString());
}
}
Aber mal im Ernst. Ich halte die Aussage von Marco13 eigentlich für am zutreffendsten. Im Normalfall hat man ja nicht zwei Variablen v1 und v2 und möchte da die Werte tauschen. Da könnte man ja einfach die Bezeichner an den entsprechenden Stellen umdrehn. Klar kennt man nicht jede Anforderung, die irgendwer bei seinem Programm haben kann, aber es fühlt sich irgendwie seltsan an.
Ich bin in Anlehnung an den oben erwähnten Thread davon ausgegangen, dass es um das Sortieren eines int-Arrays geht. Da ist IMHO alles, wo ein Objekt erzeugt werden muss, ein no-go....