weiteres Routenproblem

El Hadji

Bekanntes Mitglied
Servus Communitiy,
Ich hab ein Problem mit dieser Aufgabe:
dyb1mxw1j998q18cu.png

Und hab mich dann auch an den Code gewagt. Ich versuche zu überprüfen ob der erste Ort überhaupt den nächsten erreicht. Wenn ja dann schaue ich ob ich vom 2ten Ort den 3ten noch erreichen würde, wenn nicht tanke ich dort. Aber irgendwo habe ich einen Denkfehler.
Code:
public class LKW
{
  
    private double reichweite;

   
    public LKW(double reichweite)
    {
       this.reichweite = reichweite;
    }

   
    public ArrayList<Tankstelle> berechneTankstops (Ort[] route)
    {
        ArrayList<Tankstelle> stops = new ArrayList <Tankstelle>();
       
        double neueReichweite = reichweite;
        for(int i = 0; i < route.length-2; i++)
        {
            neueReichweite = reichweite;
           
            for (int j = i+1; j < route.length-1; j++)
            {
                if(route[i].getDistanzZu(route[j]) <= neueReichweite)
                {
                   neueReichweite -= route[i].getDistanzZu(route[j]);
                  
                   if (route[j].getDistanzZu(route[j+1]) > neueReichweite)
                   {
                       if(route[j] instanceof Tankstelle)
                       {
                         
                           stops.add((Tankstelle)route[j]);
                           i = j-1;
                           break;
                        }
                        else
                       
                        return null;
                    }
                   
                    else
                    {
                        neueReichweite -= route[j].getDistanzZu(route[j+1]);
                    }
                }
               
               else
                return null;
             
              
               
            }
        }
       
        return stops;
    }
}
ich wäre über Denkanregungen sehr dankbar.
mfg El Hadji
 

fhoffmann

Top Contributor
Momentan fährst du an einer Tankstelle vorbei, wenn du den nächsten Ort noch erreichen kannst.
Was aber ist, wenn der nächste Ort keine Tankstelle hat?
 

El Hadji

Bekanntes Mitglied
Code:
package tanken;
import tanken.gegeben.Ort;
import tanken.gegeben.Tankstelle;
import java.util.*;

public class LKW
{
  
    private double reichweite;

   
    public LKW(double reichweite)
    {
       this.reichweite = reichweite;
    }

   
    public ArrayList<Tankstelle> berechneTankstops (Ort[] route)
    {
        ArrayList<Tankstelle> stops = new ArrayList <Tankstelle>();
       
        double neueReichweite = reichweite;
        for(int i = 0; i < route.length-2; i++)
        {
            neueReichweite = reichweite;
           
            for (int j = i+1; j < route.length-1; j++)
            {
                if(route[i].getDistanzZu(route[j]) <= neueReichweite)
                {
                   neueReichweite -= route[i].getDistanzZu(route[j]);
                  
                   if ((route[j].getDistanzZu(route[j+1]) <= neueReichweite) && (route[j+1] instanceof Tankstelle))
                   {
                       neueReichweite -=route[j].getDistanzZu(route[j+1]);
                    }
                       else
                       {
                         
                           stops.add((Tankstelle)route[j]);
                           i = j-1;
                           break;
                        }
                 }
                     
                        return null;
                 }
                 
                return null;
                   
             }
               
           
             
               return stops;
               
            }
           
        }

so besser?
 

Ähnliche Java Themen

Neue Themen


Oben