0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 171
1

Вывод из ArrayList

21.12.2015, 20:32. Показов 1176. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо вывести из ArrayList объекты разных типов.Получается выводить только одного типа.При попытке вывода нескольких выводит ошибку "Не удалось привести тип объекта "Avia.Helikopter" к типу "Avia.Plane".Благодарю за помощь.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace Avia
{
    class Program
    {
        static void Main(string[] args)
        {
 
 
            
 
            Plane p1 = new Plane("Миг 29",4000,500,15);
            Plane p2 = new Plane("Су 27", 3000, 600, 15);
            Plane p3 = new Plane("Ил 2",1600,400,4);
            Helikopter h1 = new Helikopter("Ми 8",1000,200,4,8);
            Helikopter h2 = new Helikopter("Ми 24", 1500, 300, 8, 20);
            Helikopter h3 = new Helikopter("Ка 52", 800, 200, 16, 0);
 
 
 
 
            p2.Polet(200);
            p1.Strelba(20);
            h1.Polet(150);
            h2.Desantirivanie(3);
 
            ArrayList eskadrila = new ArrayList();
            eskadrila.Add(p1);
            eskadrila.Add(p2);
            eskadrila.Add(p3);
            eskadrila.Add(h1);
            eskadrila.Add(h2);
            eskadrila.Add(h3);
 
            Console.WriteLine();
            foreach (Plane t in eskadrila) 
              t.Passport();
            
          //  foreach (Helikopter r in eskadrila)
           //     r.Passportt();
 
 
 
        //  foreach (Plane p in eskadrila)
          //  {
          //      if (p.GetType() == typeof(Plane)) p.Passport();
           //     else ((Helikopter)p).Passport();
          //  }
 
            
            Console.ReadKey();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2015, 20:32
Ответы с готовыми решениями:

вывод из ArrayList
Есть класс, в котором содержатся данные о человеке(имя, профессия, рост, зарплата). Нужно было...

Вывод элементов из ArrayList
ArrayList myarr = new ArrayList(); myarr.Add(new Mars("Иванов Иван Иванович.",43)); //...

Java вывод из БД в ArrayList
В Jav'е ноль, помогите, не могу понять, в чем косяк. Есть метод, который записывает полученный из...

Вывод элементов из ArrayList
Привет,подскажите ,пожалуйста,как вывести из обычного аррайлиста элементы например с первого по...

12
Заблокирован
21.12.2015, 20:34 2
предлагаешь телепатически узнать как у тебя описаны классы Avia.Helikopter и Avia.Plane? щас телепатофон настрою только
0
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 171
21.12.2015, 20:42  [ТС] 3
Volrajas, Точно. Ступил. Просто думал что это полотно неудобно читать будет.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Avia
{
  public  class Plane : Charakters
      
 
    {
 
   
    
      public int bomb;
      public int celi;
     
 
 
        
 
        public int Bomb
        {
            get { return bomb; }
            set { bomb = value; }
        }
 
        public int  Celi
        {
            get { return celi; }
           
        }
        
 
 
        
 
        public Plane (string name, double daln, double toplivo, int bomb)
            : base(name, daln, toplivo)
 
 
        {
            this.daln = daln;
            this.toplivo = toplivo;
            this.bomb=bomb;
             this.name = name;
           
              celi = 0;
 
        }
        
        public void Strelba (int zalp)
        {
            if (bomb < zalp)
            {
                bomb = bomb;
               // Console.WriteLine("Недостаточно боеприпасов");
            }
            else 
            {
                
             Bomb = Bomb - zalp;
             celi = celi + zalp;
            }
               
 
        }
 
       new public void Passport()
        {
            Console.WriteLine("\n Название: {0} \nДальность: {1} км \nОставшееся топливо : {2} литров \nРакет {3} штук \nПоражено целей {4} \nРасход топлива на 1 км {5}литра ", name, daln, toplivo, bomb, celi, Rashod);
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Avia
{
    public class Helikopter : Charakters
    {
        int desant;
 
 
        public int Desant
 
       {
        get { return desant;}
        set { desant=value;}
       }
 
 
        public Helikopter(string name, double daln, double toplivo, int bomb, int desant)
            :  base(name, daln, toplivo)
        {
            this.desant = desant;
        }
 
          public void Desantirivanie (int des )
           {
               Desant = Desant - des;
           }
 
 
     public void Passport()
          {
              Console.WriteLine("\n Название: {0} \nДальность: {1} км \nОставшееся топливо : {2} литров \nРакет {3} штук \nПоражено целей {4} \n Десант на борту:{5} \n Расход топлива на 1 км {6}литра ", name, daln, toplivo,  desant);
          }
 
 
 
 
 
        
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Avia
{
 public   class Charakters
    {
 
        public double daln;
        public double toplivo;
        public string name;
 
        public double Daln
        {
            get { return daln; }
            set { daln = value; }
        }
        public double Toplivo
        {
            get { return toplivo; }
            set { toplivo = value; }
        }
 
        public string Name
        {
            get { return name; }
 
        }
 
 
        public double Rashod
        {
            get { return daln / toplivo; }
        }
 
 
        public  Charakters   (string name, double daln, double toplivo)
        {
            this.daln = daln;
            this.toplivo = toplivo;
           
             this.name = name;
           
            
 
        }
 
        public void Polet(double km)
        {
            Daln = Daln - km;
            Toplivo = Toplivo - km / 4;
 
 
        }
 
        public void Passport()
        {
            
        }
       
 
    }
}
0
Заблокирован
21.12.2015, 20:55 4
Цитата Сообщение от Zyf21 Посмотреть сообщение
C#
1
foreach (Plane t in eskadrila)
замени на
C#
1
foreach (Charakters t in eskadrila)
0
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 171
21.12.2015, 20:58  [ТС] 5
Volrajas, в смысле где? По задумке классы Helikopter и Plane наследуют у Charakters, и потом уже они выводятся.
0
Заблокирован
21.12.2015, 20:59 6
Цитата Сообщение от Zyf21 Посмотреть сообщение
Volrajas, в смысле где? По задумке классы Helikopter и Plane наследуют у Charakters, и потом уже они выводятся.
где где в мейне в первом посте
0
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 171
21.12.2015, 21:02  [ТС] 7
Volrajas, я думал он там не нужен. Он создавался для того чтобы с него наследовалось пара методов в другие классы.И уже с тех классов что то выводится.
0
Заблокирован
21.12.2015, 21:11 8
Цитата Сообщение от Zyf21 Посмотреть сообщение
Volrajas, я думал он там не нужен. Он создавался для того чтобы с него наследовалось пара методов в другие классы.И уже с тех классов что то выводится.
кто не нужен? ну и наследуй кто тебе не дает? просто если ты хочешь присваивать объекты обоих типов то тебе надо чтобы ссылка получалась базового класса
0
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 171
21.12.2015, 21:16  [ТС] 9
Volrajas, а, получается нужно ссылаться на Charakters?
0
Заблокирован
21.12.2015, 21:20 10
Цитата Сообщение от Zyf21 Посмотреть сообщение
Volrajas, а, получается нужно ссылаться на Charakters?
да, от него же тот метод пронаследован, просто замени то что я писал в 4 посте
0
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 171
21.12.2015, 21:27  [ТС] 11
Volrajas, выводит пустую консоль.
0
Заблокирован
21.12.2015, 21:31 12
Цитата Сообщение от Zyf21 Посмотреть сообщение
Volrajas, выводит пустую консоль.
значит что то не так в реализации классов, смотри ты их как то мутно наследуешь, я имею ввиду функцию Passport, то ты пишешь new, то вообще ничего, я сам вечно с наследованием путаюсь, но кажется надо писать override и там и там, кстати если тебе не нужна по сути реализация Passport в классе Plane (она у тебя пустая), то сделай функцию абстрактной (ну и класс соответственно), также возможно имеет сделать ее виртуальной, хотя я не уверен, сам так и не понял для чего это...
0
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 171
21.12.2015, 21:42  [ТС] 13
Volrajas, я с ООП не очень дружу, поэтому пока не понимаю для чего функции делаются абстрактными или виртуальными.Лучше наверное сделать несколько ArrayList одного типа чтобы потом выводить по очереди из них.Другое с моими знаниями будет трудно реализовать.
0
21.12.2015, 21:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2015, 21:42
Помогаю со студенческими работами здесь

Вывод в textbox данных из ArrayList
Здравствуйте. Имеется метод в другом классе с помощью которого выводятся данные в textbox.Эти...

Вывод елементов ArrayList в консоль
Помогите плз, при выводе елементов ArrayList в консоль у выводится лишние строки? import...

Не работает вывод в цикле в ArrayList
Добрый день! Помогите,пожалуйста, разобраться почему не происходит перемещение между элементами...

Вывод данных из MsSql в ArrayList
Здравствуйте.Нужно вывести данные из нескольких таблиц, а затем занести их в ArrayList. Про попытке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru