Основная проблема, с которой я столкнулся, заключается в том, что переменная массива, которую я передаю в общедоступный метод в качестве параметра из другого класса, не распознает расположение индекса.
PricingApp.cs
class PricingApp
{
static void Main(string[] args)
{
// Calls the Display title method
DisplayTitle();
// declared the following variables
string productId;
int unitQuantity;
double unitPrice;
double extendedPrice;
string loopControl;
// set loop control equal to "Y"
loopControl = "Y";
//Begining of while loop
while (Convert.ToBoolean(loopControl = "Y"))
{
Console.Write("\n\t\tPlease enter the product ID <case sensitive>: ");
productId = Console.ReadLine();
Pricing product1 = new Pricing();
product1.FindPrice(productId[i]);
}
}
static void DisplayTitle()
{
Console.WriteLine("\t\tProject 3 - Pricing Application - Jake Stuck");
Console.WriteLine("\n\t\t____________________________________________________________");
}
ниже приведен код для второго пользовательского класса Pricing.cs.
class Pricing
{
// method for find price
public static double FindPrice(string id)
{
double[] productPrice = { 179.99, 121.99, 46.99, 235.99, 18.99 };
string[] productID = { "AX3", "SD2", "SD3", "FG5", "PY3" };
// declared variable for unitPrice
double unitPrice = -1;
// Start of for loop
for (int i = 0; i < productID.Length; i++)
{
// if product id matches id
if (productID[i] == id)
{
// sets unit price and product price equal to eachother
unitPrice = productPrice[i];
}
}
// Return the unit price
return unitPrice;
}
}
Попробуйте Pricing.FindPrice(productId). Поскольку это статический метод, вам не нужен экземпляр. Кроме того, я предполагаю, что вы должны передать productId, а не один символ, как productId[i].
вау, спасибо, что сработало. Я смотрел на это около двух с половиной часов, спасибо !!





Вы не определяете i в Main(), поэтому product1.FindPrice(productId[i]); не будет компилироваться. Но вы бы определили, что он не будет компилироваться, поскольку оператор [] в строке возвращает символ типа char по соответствующему индексу, например. "Hello"[1] оценивается как 'e'. И нет метода FindPrice() с единственным аргументом char. Итак, удалите [i].
Вы также можете захотеть выйти из цикла в FindPrice() после того, как совпадение будет найдено, если вы не ожидаете, что продукты будут содержать дубликаты, и по какой-то причине хотите получить последнее совпадение.
И два массива productPrice и productID тоже не такие уж и хорошие. Невозможно утверждать, что они всегда имеют одинаковую длину или соответствующие значения имеют один и тот же индекс. Но вы полагаетесь на это в своем цикле. Лучше использовать один массив типа, который может содержать оба значения для идентификатора и цены в некоторых свойствах. Вы можете определить свои собственные или, по крайней мере, использовать некоторые предопределенные, такие как Tuple<double, string>, для специальных разовых вещей.
Вам нужно научиться отлаживать свой код. Глубоко подумайте, что, по вашему мнению, делает
productId[i]и что содержитproductId, когда вы вызываетеproduct1.FindPrice(productId[i]);.