über mein Programm:Mein boolean Wert ist falsch, obwohl alle der Code korrekt ist
Mein Algorithmus (diese Klasse) ist gemeint, ob eine Lieferung prüfen beendet worden ist und macht danach die LKW/Anhänger/Treiber für eine weitere Lieferung, zur gleichen Zeit sendet dieser Algorithmus einen anderen LKW/Anhänger/Fahrer auf eine Lieferung. Um es diese Klasse bis macht folgende:
- prüfen, ob eine Buchung in Allocation-Modus (Allocation-Modus bedeutet im Grunde, dass die „Buchung“ ist im Gang der
- prüft geliefert wird, ob dort Tonnage links die Buchung (Bsp. Ich möchte 500 Tonnen an einen Ort senden, aber eine Lieferung kann nur 30 Tonnen auf einmal sein, so dass es überprüft, ob es noch Tonne gibt, die geliefert werden muss)
- Um den Fahrer (s) zu machen/Truck (s)/Trailer (s) verfügbar, die ihre Lieferung beendet haben
- Tonnage automatisch einem Fahrer/Anhänger/LKW zuweisen
- Einträge löschen, die beendet sind (alle abgeschlossenen Buchungen - Protokolle bleiben in der Datenbank).
Mein Problem:
Ich habe keine Ahnung, was mit meiner Klasse falsch, ich habe Stunden bei ihm gewesen und kann nicht scheinen, um herauszufinden, was mein boolean Variable verursacht (forLoopBreak) ein auslösen "Falscher" Wert beim Aufruf der Methode checkAvailTrailers(). Das Problem scheint dort zu sein, aber ich kann nicht herausfinden, was das Problem verursacht.
Klasse:
[https://pastebin.com/4up8eppd][1]
(ich konnte es nicht hier einfügen als ich die Grenze von Zeichen met)
Hinweise:
- ich meine Programmierung Aussehen weiß aber, aber ich bin noch neu dazu.
- Ich beschloss, die ganze Klasse anzuhängen, da das Problem an einem anderen Ort sein könnte.
Edit:
Mein Code ist zu groß, so ist hier zu untersuchen, ist die relevanten Teile:
private void startAlgo()
{
checkAvailTrailers();
if (forloopBreak == false)
{
setErrorMessage("Avail Trailers not enough!");
}
}
private void checkAvailTrailers()
{
string trailerRouteAllocation = null;
string trailerVragAllocation = null;
string tempHolderTrailer = null;
string myNewTempT = null;
string trailermyTemp = null;
int trailerCount = 0;
int tempTra = -1;
//Gets trailer route classification
using (SqlCommand selectTrailer = new SqlCommand("SELECT [TR_Routes] FROM dbo.TrailerDetail WHERE [TR_Allocation] = " + 0, con))
{
using (SqlDataReader reader = selectTrailer.ExecuteReader())
{
while (reader.Read())
{
trailerRouteAllocation = reader.GetString(0);
tempHolderTrailer = trailerRouteAllocation;
myNewTempT = trailerRouteAllocation;
for (int l = 0; l < tempHolderTrailer.Length; l++)
{
tempTra = myNewTempT.IndexOf(",");
if (tempTra >= 0)
{
trailermyTemp = myNewTempT.Substring(0,tempTra);
}
else
{
trailermyTemp = myNewTempT;
if (trailermyTemp == myCurrentBookingRoute.ToString())
{
mycurrentTrailerAvailableRoute[trailerCount] = tempHolderTrailer;
}
break;
}
myNewTempT = myNewTempT.Substring(tempTra + 1);
if (trailermyTemp == myCurrentBookingRoute.ToString())
{
mycurrentTrailerAvailableRoute[trailerCount] = trailerRouteAllocation;
}
}
trailerCount++;
}
reader.Close();
}
}
//gets trailer vrag classification.
int countTrailerVrag = 0;
for (int l = 0; l < mycurrentTrailerAvailableRoute.Length; l++)
{
if (mycurrentTrailerAvailableRoute[l] != null)
{
using (SqlCommand select = new SqlCommand("Select [TR_Classification] FROM dbo.TrailerDetail WHERE [TR_Routes] = '" + mycurrentTrailerAvailableRoute[l] + "' AND [TR_Allocation] = " + 0, con))
{
using (SqlDataReader readerS = select.ExecuteReader())
{
while (readerS.Read())
{
trailerVragAllocation = readerS.GetString(0);
myAvailableTrailerVragClassification[countTrailerVrag] = trailerVragAllocation;
countTrailerVrag++;
}
readerS.Close();
}
}
}
}
int countTrailers = 0;
string trailerRegNum = null;
for (int l = 0; l < mycurrentTrailerAvailableRoute.Length; l++)
{
if (mycurrentTrailerAvailableRoute[l] != null)
{
using (SqlCommand selectT = new SqlCommand("Select [TR_RegNumber] FROM dbo.TrailerDetail WHERE [TR_Routes] = '" + mycurrentTrailerAvailableRoute[l] + "'" + " AND [TR_Classification] = '" + myAvailableTrailerVragClassification[l] + "' AND [TR_Allocation] = " + 0, con))
{
SqlDataReader readerT = selectT.ExecuteReader();
if (readerT.HasRows)
{
while (readerT.Read())
{
trailerRegNum = readerT.GetString(0);
myAvailableCurrentTraillerRegNumber[countTrailers] = trailerRegNum;
countTrailers++;
}
}
else
{
forloopBreak = false;
}
readerT.Close();
}
}
}//END OF TRAILER CHECKING
//gets trailer's max tonnage
int myTrailerTonMax = 0;
int myTrailerTon = 0;
for (int l = 0; l < mycurrentTrailerAvailableRoute.Length; l++)
{
if (mycurrentTrailerAvailableRoute[l] != null)
{
using (SqlCommand selectT = new SqlCommand("Select [TR_MaxTonnage] FROM dbo.TrailerDetail WHERE [TR_Routes] = '" + mycurrentTrailerAvailableRoute[l] + "'" + " AND [TR_Classification] = '" + myAvailableTrailerVragClassification[l] + "'", con))
{
using (SqlDataReader readerS = selectT.ExecuteReader())
{
while (readerS.Read())
{
myTrailerTon = readerS.GetInt32(0);
myTrailerAvailableTonMax[myTrailerTonMax] = myTrailerTon;
myTrailerTonMax++;
}
readerS.Close();
}
}
}
}
}
Extra: - Die Daten in meiner Datenbank stimmen mit den Kriterien while loop überein führt sogar aus, aber am Ende gibt mein boolescher Wert ein falsches Ergebnis zurück.
Ihr Code ist zu groß für uns zu untersuchen, können Sie nicht einfach die relevanten Bits posten? –
Ich werde versuchen, dies zu tun –