Получать самую большую стоимость arraylist внутри объекта, который находится в другом arraylist

Прощение из-за неразберихи, которую я формирую в титуле, но не, как то, чтобы быть яснее.

Он для упражнения института. Я стараюсь получать самую высокую стоимость "Продажи", у которой есть рабочий внутри ArrayList, который находится внутри объекта (который жил внутри другого ArrayList). Он в Windows Forms.

Я имею с одной стороны (cListado.cs):

    private ArrayList listadoEmpleados;

    public string empleadoMayorVenta()
    {
        cEmpleado empl;
        int i, mayor, pos;
        string texto;

        for (i = 0; i < listadoEmpleados.Count; i++) 
        {
            empl = (cEmpleado)listadoEmpleados[i];
            if(empl.Mventas > mayor)
            {
                mayor = empl.Mventas;
                pos = i;
            }
        }

        empl = (cEmpleado)listadoEmpleados[pos];
        texto = empl.mostrarDatos();

        return texto;
    }

И из-за другого (cEmpleado.cs):

    // DECLARACION DE MIEMBROS *******************************
    private string mNombre;
    private int mEdad;
    private ArrayList mVentas;

    //********

    public ArrayList Mventas
    {
        get{ return mVentas; }
        set{ mVentas = value; }

У меня появляются следующие ошибки

Оператор'>' не может применяться в operandos типа 'object' и 'int' (CS0019) cListado.cs

и

Не возможно конвертировать безусловно тип 'object' в 'int'. Уже существует ясное превращение (подтвердите, ему не ли хватает превращения) (CS0266) - cListado.cs

Что я врежу? Потому что не, как получение информации о самой высокой стоимости arraylist "Использованного" объекта и сравнивать это. Я выдвигаю плохо решение?

Если вам нужно, чтобы он переслал cs без какой-либо проблемы. Имейте в виду, что я изучаю, и что это вероятно была более простая вещь делания, и что он делал стадо ослов.

Спасибо заранее.

0
задан 03.05.2017, 23:17
3 ответа

В этом l¦-nea:

if(empl.Mventas > mayor)
{
    mayor = empl.Mventas;
    pos = i;
}

ArrayList хранит colecci¦n типа object, сначала ты нуждаешься в том, чтобы пробежать ArrayList перед тем, как делать comparaci¦n, а следовательно podr¦-схвати пробовать:

for (j = 0; j < empl.Mventas.Count; j++) 
{
    if ((int)empl.Mventas[j] > mayor) 
    {
        mayor = (int)empl.Mventas[j]; pos = j; // No sé para que esto último.
    }
}

Это raz¦n двух ошибок, которые он показывает тебе, составив, объясняя их во всех деталях:

(CS0019): Оператор > не может применяться в operandos типа object и int

, Как ошибка показывает, происходит, попробовав оценивать один object с любым типом, который выносил бы оператор l¦gico как <, >, <=, >=, == или !=, это происходит, потому что object может хранить любой тип информации, созданной в C#, от этого типа происходят все классы и структуры C#.

И:

(CS0266): Не возможно превращать impl¦-citamente тип object в int. Уже существуй conversi¦n expl¦-упоминает (подтвердите, ему не ли хватает conversi¦n)

Происходит, попробовав делать следующее:

object a = 25; // Definir un int en un object.
int b = a;  // Asignar el object a en b

, Что bÃ: sicamente он вынуждает тебя делать conversi¦n следующего способа:

int b = (int)a;

Для того, чтобы было удалено предупреждение.

1
ответ дан 24.11.2019, 09:29
  • 1
    Большое спасибо, справедливое то, что било козырем меня. Я ретушировал немного có я говорю и сейчас он делает точно то, что я хочу. – Jose Gonzalez 04.05.2017, 18:04

добрый вечер. Как я понимаю tenes array list внутри другого. Следовательно ты будешь должен использовать два цикла for, один для первого arraylist, которого из-за каждого полученного обратно объекта ты будешь должен ussar другой for, чтобы пробегать array, который содержит полученный обратно объект первого. Он читает документацию c#, и если есть методы, которые возвращали бы самого большего из сохраняемых (в java возможно делать используя for each, или ndicando ты упорядочиваешь с compareTo или я сравнил)

, Если в c# не ecisten ты будешь должен упорядочивать arraylist с методом пузырька воздуха, так больше всегда я оставался в положении [0] из договоренности

0
ответ дан 24.11.2019, 09:29

1 - Ты recomendarГ, - в который вместо

Arraylist listadoEmpleados;

ты использовал

List<cEmpleado> listadoEmpleados;

, Так ты не должен быть борясь с пробами.

2 - ты не определяешь, которого тип - ArrayList mVentas. Я даю из-за факта, который является arraylist объектов продаж. Если то, что ты хочешь узнать, каково персонала, у него есть большее число продаж, ему возможно удаваться легко используя LINQ:

cEmpleado empleadoMayorVentas = listadoEmpleados.OrderByDescending(empleado => empleado.ventas.Count).First();

3 - Если ArrayList mVentas - наоборот список целых чисел, я рекомендую тебе использовать также List<int> ventas, и то, что ты хочешь, состоишь в том, чтобы получать, который использован самой большей продажей, ты можешь использовать этот:

cEmpleado empleadoMayorVentas = listaEmpleados.OrderByDescending(empleado => empleado.ventas.Max()).First();

4 - Если ты продолжаешь queriendo использовать ArrayList в Продажах из-за sabe Бог, что razГіn:

cEmpleado empleadoMayorVentas = listaEmpleados.OrderByDescending(empleado => empleado.ventas.ToArray().Max()).First();
0
ответ дан 24.11.2019, 09:29
  • 1
    Для точки 2, ArrayList не класс gené богатая, но ArrayList<T>, sí. – NaCl 04.05.2017, 00:58
  • 2
    Если, но как ставит упражнение, оно кажется больше незнанием с его стороны, как осуществлять коллекции, чем хотеть использовать любой Arraylist объектов. Я могу быть спутанным tambié n. – Corpex 04.05.2017, 01:15