クラスプロジェクトでは、再帰的メソッドを使用して重みの最大値を持つ配列内のオブジェクトを返す必要があります。私は私の人生のために正しい出力を得ることができません。このメソッドは、メソッドがメインメソッドで呼び出されたときに渡される正確なインデックスでPacketオブジェクトを返します。これはメソッドのコードです。最大要素を持つオブジェクトを返すJava再帰
public Packet maxWeightPacket(Packet[] list, int n) {
Packet max = new Packet(0, 0.00, "");
if (n == 0) {
return list[n];
} else {
if (list[n].getWeight() > max.getWeight()) {
max = list[n];
}
maxWeightPacket(list, n - 1);
}
return max;
}
パケットクラスのコードはここにある:
public class Packet {
private int idNumber;
private double weight;
private String destination;
public Packet(int idNumber, double weight, String destination) {
this.idNumber = idNumber;
this.weight = weight;
this.destination = destination;
}
public boolean isHeavy() {
if (weight > 10)
return true;
else
return false;
}
@Override
public String toString() {
return idNumber + " " + weight + " " + destination;
}
public double getWeight() {
return weight;
}
public String getDestination() {
return destination;
}
}
すべてのヘルプや指導をいただければ幸いです。 ありがとう!
あなた 'else'ブロックが完全に再帰呼び出しの戻り値を無視する - そう返さ' max'は常に最初の呼び出し(に割り当てられたままになりますあなたが渡したインデックス) – UnholySheep
@Os。 "n"はリストの長さです。私はそれが問題だと思ったが、私はどのように最大の長さのパケットを追跡し、それを返すか分からない。私は、Packetオブジェクトをインスタンス化して、プロジェクトの制限ごとにmaxWeightPacketメソッドの外側を追跡することはできません。 – JMarotta
@JMarottaあなたの質問の中にメソッドの署名を変更することはできません。 –