Reputation: 3
For some reason, the only compile error I have in my C# code is "[argument 1] (& argument 2) Cannot convert from "string" to "string[]"", in reference to allDeliveries.Add(Delivery.newDelivery(trimmedKeys[i], values[i]));
. However, the only strings defined within my code are the properties on delivery, which aren't returned and are also private. Since there aren't any strings defined in my program, only string arrays, I'm not sure where this could be coming from.
public static List<Delivery> parseKey(string[] placeHolder, string[] keys)
{
List<Delivery> allDeliveries = new List<Delivery>();
string[] trimmedKeys = new string[keys.Length];
string[] values = new string[placeHolder.Length];
for (int i = 0; i < keys.Length; i++)
{
trimmedKeys[i] = keys[i].Trim();
values[i] = placeHolder[i];
Delivery delivery = new Delivery();
allDeliveries.Add(Delivery.newDelivery(trimmedKeys[i], values[i]));
}
return allDeliveries;
}
My entire program's code is:
static void Main(string[] args)
{
List<Delivery> deliveries = new List<Delivery>();
string[] doesntwork = new string[5];
Delivery thing = new Delivery()
thing = Delivery.newDelivery(doesntwork, doesntwork);
deliveries = Parse.parseDeliveries(@"C:\Users\owner\Documents\Visual Studio 2015\TIY\Week-1-Day-4\planet_express_logs.csv");
Delivery Delivery1 = deliveries[1];
Console.WriteLine(deliveries.Count);
Console.ReadLine();
}
}
public class Delivery
{
private String destination { get; set; }
private String itemDelivered { get; set; }
private String pilot { get; set; }
private int numberOfCrates;
private double moneyMade { get; set; }
private DateTime orderCreatedOn { get; set; }
//public int numberOfCrates
//{
// get { return _numberOfCrates; }
// set { this.numberOfCrates = value; }
//}
public static Delivery newDelivery(string[] keys, string[] values)
{
Delivery aDelivery = new Delivery();
for (int i = 0; i < keys.Length; i++)
{
if (keys[i].ToLower() == "what got shipped")
aDelivery.itemDelivered = values[i];
if (keys[i].ToLower() == "number of crates")
aDelivery.numberOfCrates = Convert.ToInt32(values[i]);
if (keys[i].ToLower() == "money we made")
aDelivery.moneyMade = Convert.ToDouble(values[i]);
if (keys[i].ToLower() == "order created on")
aDelivery.orderCreatedOn = Convert.ToDateTime(values[i]);
if (keys[i].ToLower() == "destination")
{
aDelivery.destination = keys[i];
if (keys[i].ToLower() == "earth")
{
aDelivery.pilot = "Fry";
continue;
}
if (keys[i].ToLower() == "mars")
{
aDelivery.pilot = "Amy";
continue;
}
if (keys[i].ToLower() == "uranus")
{
aDelivery.pilot = "Bender";
continue;
}
else
aDelivery.pilot = "Leela";
}
}
Console.WriteLine("{0} {1} {2} {3}", aDelivery.destination, aDelivery.numberOfCrates, aDelivery.moneyMade, aDelivery.itemDelivered);
return aDelivery;
}
// use this to print out data
// implement class and inheritance
// pilots and their deliveries
}
public class Parse // change to private and enable strings
{ // keep all parsing things in here
public static List<Delivery> parseDeliveries(string file)
{
bool firstLine = true;
List<Delivery> allDeliveries = new List<Delivery>();
string[] fileContents = System.IO.File.ReadAllLines(@file);
string[] keys = new string[fileContents.Length], values = new string[fileContents.Length];
foreach (String line in fileContents)
{
if (firstLine)
{
keys = line.Split(',');
firstLine = false;
continue;
}
values = line.Split(',');
allDeliveries.AddRange(parseKey(keys, values));
}
return allDeliveries;
}
public static List<Delivery> parseKey(string[] placeHolder, string[] keys)
{
List<Delivery> allDeliveries = new List<Delivery>();
string[] trimmedKeys = new string[keys.Length];
string[] values = new string[placeHolder.Length];
for (int i = 0; i < keys.Length; i++)
{
trimmedKeys[i] = keys[i].Trim();
values[i] = placeHolder[i];
Delivery delivery = new Delivery();
allDeliveries.Add(Delivery.newDelivery(trimmedKeys[i], values[i]));
}
return allDeliveries;
}
}
}
Upvotes: 0
Views: 5214
Reputation: 632
public static Delivery newDelivery(string[] keys, string[] values)
takes two string[]
as arguments. trimmedKeys[i]
and values[i]
are both string
, not string[]
.
Upvotes: 4