Member 13975230 Ответов: 1

Как мне взять arraylist?


Итак, у меня возникла проблема: я не знаю, как взять arraylist из одного класса и распечатать его в main.
Итак у меня есть текстовый файл;
Informatikos fakultetas
Petraitis; Jonas; IF-1/8; 3; 10 8 9 0
Algaitis; Algis; IF-1/8; 3; 10 0 9 9
Petraitis; Kazys; IF-1/8; 4; 9 9 10 10
Algaitis; Rimas; IF-1/8; 2; 9 9 0 0
Petraitis; Vytas; IF-1/9; 4; 8 9 7 5
Petraitis; Anupras; IF-1/9; 3; 8 7 6 0
Petraitis; Vidas; IF-1/9; 2; 9 8 0 0
Petraitis; Anzelmas; IF-1/9; 3; 9 9 9 0
Petraitis; Šarūnas; IF-1/9; 4; 9 10 9 7



Теперь я назначил arraylist в методе классу, где его слишком много, чтобы понять. Теперь мне нужно создать метод в программе класса, в котором я могу получить значения arraylist с помощью FOREACH, а не с помощью linq. Проблема в том, что я не знаю, как это сделать. Мой учитель сказал, что вы должны вызвать его с помощью цикла for внутри forcycle, но я не знаю, как это сделать. Даже если бы я это сделал распечатал вот это:
System.Collections.ArrayList
System.Collections.ArrayList
System.Collections.ArrayList
System.Collections.ArrayList
System.Collections.ArrayList
System.Collections.ArrayList
System.Collections.ArrayList
System.Collections.ArrayList
System.Collections.ArrayList
Press any key to continue . . .


Поэтому мне нужно знать, как вызвать значения arraylist из одного класса в другой. Между тем я не могу использовать какие-либо циклы for или foreach в main, я могу использовать их только в программе класса mehthods.
ОК СП вот полная программа но не на английском языке:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.IO;

namespace ConsoleApp2
{
    class Studentas
    {
        private string pavardė, vardas, grupė;
        private int kieks;
        private ArrayList paz;
        private double vidurkis;

        public Studentas()
        {
            pavardė = "";
            vardas = "";
            grupė = "";
            kieks = 0;
            vidurkis = 0;
            paz = new ArrayList();
        }

        public void Dėti(string pav, string vard, string grup,int kiek, ArrayList pz)
        {
            pavardė = pav;
            vardas = vard;
            grupė = grup;
            kieks = kiek;
            foreach (int sk in pz)
                paz.Add(sk);
        }
        public void Dėti2(string pav, string vard, string grup, int kiek,double vid)
        {
            pavardė = pav;
            vardas = vard;
            grupė = grup;
            kieks = kiek;
            vidurkis = vid;
        }

        public ArrayList ImtiArray() { return paz; }

        public override string ToString()
        {
            string eilute;
            eilute = string.Format("{0, -12} {1, -9} {2, -7} {3,1:d}",
            pavardė, vardas, grupė,kieks);
            foreach (int sk in paz)
                eilute = eilute + string.Format("{0, 3:d}", sk);
            return eilute;
        }

        public string Tostr()
        {
            string eilute;
            eilute = string.Format("{0, -12} {1, -9} {2, -7} {3,2:F}",
            pavardė, vardas, grupė, PazVid());
            return eilute;
        }

        public double PazVid()
        {
            double sum = 0;
            foreach(int sk in paz)
            {
                sum = sum + sk;
            }
            return sum / kieks;
        }

    }
    class Fakultetas
    {
        const int CMax = 100; 
        private Studentas[] St;
        private int n;

        public Fakultetas()
        {
            n = 0;
            St = new Studentas[CMax];
        }

        public int Imti() { return n; }

        public Studentas Imti(int i) { return St[i]; }

        public void Dėti(Studentas ob) { St[n++] = ob; }

    }
    class Program
    {
        const string CFd = "..\\..\\A.txt";
        const string CFr = "..\\..\\Rezultatai.txt";

        static void Main(string[] args)
        {
            Fakultetas grupes = new Fakultetas();
            Fakultetas grupes1 = new Fakultetas();
            string pav;
            ArrayList pz = new ArrayList();

            if (File.Exists(CFr))
                File.Delete(CFr);
            Skaityti(ref grupes, CFd, out pav);
            Spausdinti(grupes, CFr, " Pradinis studentų sąrašas", pav,0);
            Formuoti(grupes, ref grupes1);


            if (grupes1.Imti() > 0)
            {
                Spausdinti(grupes1, CFr, " Naujas studentų sąrašas", pav, 1);
            }
            FVid(grupes1,pz);
        }
        static void FVid(Fakultetas grupes1,ArrayList pz)
        {
            foreach(int sk in pz)
            {
                Console.WriteLine(grupes1.Imti(sk).ImtiArray(pz));
            }
        }

        static void Skaityti(ref Fakultetas grupe, string fv, out string pav)
        {
            using (StreamReader reader = new StreamReader(fv))
            {
                string pv, vrd, grp;
                int kiek;
                ArrayList pz = new ArrayList();
                using(StreamReader fr = new StreamReader(fv))
                {
                    string pavr;
                    pavr = fr.ReadLine();
                    pav = pavr;
                }
                string[] lines = File.ReadAllLines(fv, Encoding.GetEncoding(1257));
                int n = lines.Length;
                for (int i= 1;i <=n-1;i++)
                {
                    string[] parts = lines[i].Split(';');
                    pv = parts[0].Trim();
                    vrd = parts[1].Trim();
                    grp = parts[2].Trim();
                    kiek = int.Parse(parts[3].Trim());
                    //paz
                    string[] eil = parts[4].Trim().Split(new[] { ' ' },
                    StringSplitOptions.RemoveEmptyEntries);
                    pz.Clear();
                    foreach (string eilute in eil)
                    {
                        int aa = int.Parse(eilute);
                        pz.Add(aa);
                    }
                    Studentas stud = new Studentas();
                    stud.Dėti(pv, vrd, grp, kiek, pz);
                    grupe.Dėti(stud);
                }
            }
        }

        static void Spausdinti(Fakultetas grupe, string fv, string antraštė, string pav, int n)
        {
            using (var fr = File.AppendText(fv))
            {
                fr.WriteLine(pav);
                fr.WriteLine("------------------------------------------");
                if(n == 1)
                {
                    string virsus =
            "------------------------------------------\r\n"
            + " Pavardė     Vardas     Grupė   Vidurkis \r\n"
            + "------------------------------------------";
                    fr.WriteLine(antraštė);
                    fr.WriteLine(virsus);
                }
                else
                {
                    string virsus =
            "------------------------------------------\r\n"
            + " Pavardė     Vardas     Grupė   Pažymiai \r\n"
            + "------------------------------------------";
                    fr.WriteLine(antraštė);
                    fr.WriteLine(virsus);
                }
                for (int i = 0; i < grupe.Imti(); i++)
                {
                    if (n == 0)
                    {
                        fr.WriteLine("{0}", grupe.Imti(i).ToString());
                    }
                    else
                    {
                        fr.WriteLine("{0}", grupe.Imti(i).Tostr());
                    }
                }
                fr.WriteLine("------------------------------------------\r\n");
            }
        }
        static void Formuoti(Fakultetas grupes,  ref Fakultetas grupes1)
        {
            for (int i = 0; i < grupes.Imti(); i++)
            {
                    grupes1.Dėti(grupes.Imti(i));
            }
        }
    }
}


Что я уже пробовал:

Все к настоящему времени я безнадежен действительно нуждаюсь в помощи

1 Ответов

Рейтинг:
0

OriginalGriff

Во-первых, ArrayList является частью Student класс, который кажется немного странным - у вас есть метод для вставки значений, но вы его не вызываете, и я не уверен, почему он вообще существует.

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

Я просто предполагаю, что ваш School нуждается в коллекции Student объекты - которые он имеет под названием St - но ты и не показываешь, как ты в это что-то вкладываешь!

Я думаю, что вам нужно остановиться на этом, скопировать папку решения в безопасное место, а затем начать все сначала. Внимательно прочитайте вопрос - я не думаю, что вы совсем правильно следуете инструкциям и должны переосмыслить его.

Но печать ArrayList-это не просто случай консоли.WriteLIne(myArrayList) - вам нужно повторить каждый из элементов коллекции с помощью цикла:

foreach (object obj in MyArrayList)
   {
   Console.Write(obj.ToString());
   }
Console.WriteLine();
Если вы вызовете ToString для всего ArrayList, то все, что вы получите, - это полное имя класса "System.Коллекции.Коллекции" - как вы поняли!


Member 13975230

Ну, я просто скопировал биты своей программы, я мог бы дать вам весь код, но именованные переменные не на английском языке.

Rob Philpott

** Буквоед Оповещения **

Функция ToString() не служит никакой цели.

Ну, Интернет полон раздражающих людей, так что я просто обнимаю его.

OriginalGriff

Я бы согласился - я просто бросил его туда, чтобы ОП знал, что он его напечатает ...

Richard Deeming

На самом деле, он действительно служит определенной цели: он бросает NullReferenceException если какой-либо из элементов в списке является null. :)

Member 13975230

В основном я должен использовать 3 класса. Во-первых, где я присваиваю все значения. Второй класс должен быть контейнером, в котором хранятся временные значения. В-третьих, я должен сделать все вычисления, например, суммировать все значения и выяснить, что такое avarege...

OriginalGriff

Затем, когда вы берете "просто биты", вам нужно хорошенько подумать о том, какие биты нам показать - если они не представляют код, который вы на самом деле используете, то они нам вообще не нужны! И помните, мы понятия не имеем, что именно ваш учитель попросил вас сделать (или почему, черт возьми, он говорит вам использовать то, что было заменено в 2006 году ... типобезопасные универсальные классы, такие как класс List, намного проще в использовании и намного лучше!)