• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pętla wykonuje się tyle razy ile jest stringów

Object Storage Arubacloud
–1 głos
316 wizyt
pytanie zadane 21 czerwca 2018 w C# przez xxkondzioxx15 Obywatel (1,440 p.)

Witam, mam problem z pętlą for w C#. Chciałbym aby pętla wykonywała się taką ilość razy ile jest graczy. Kod wygląda tak:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using doru;
using UnityEngine;

	private void PrintPls(StringBuilder sb, string templ, IEnumerable<PlayerView> pls)
	{
		foreach (PlayerView playerView in pls)
		{
			string text = playerView.ToString(false, true, false);
			for (int i = 0; i <= text.length; i++)
			{
				sb.AppendLine(string.Format(templ, new object[]
				{
					i,
					text,//nazwa gracza
					(!(playerView.pl == null)) ? string.Empty : Bs.TR("Dead", null, null),
					playerView.Kills,
					playerView.Deaths,
					playerView.PlayerPing,
					playerView.PlayerFps,
					(!playerView.IsHost || playerView.bot) ? string.Empty : Bs.TR("Host", null, null),
					(!Bs._Loader.isMod) ? 0 : playerView.ErrorCount,
					string.Empty
				}));
			}
		}
	}
}

Niestety wyżej przedstawiona pętla wykonuje się taką ilość razy z ilu znaków składa się nick gracza. Nie wiem jak ponumerować(miejsce gracza w rankingu) każdego gracza. Szukałem coś po ineternecie, ale nic nie udało mi się znaleźć. Byłbym wdzięczny za wszelką pomoc. Z góry dziękuję za odpowiedzi.

P.S Czy istnieje jakiś znacznik który poukłada te dane w kolumnach

1
komentarz 21 czerwca 2018 przez NowyUrzydgownig Mądrala (5,090 p.)
Aby je poukładać wywołujesz metode Sort z LINQ. Zaimplementuj w tym celu interfejs IComparabale. Zamiast pisać text.length napisz < pls.Count.
komentarz 21 czerwca 2018 przez xxkondzioxx15 Obywatel (1,440 p.)
Dzięki serdeczne za odpowiedź . Mógłbyś podać mi jakiś przykład jak wywołaś metodę Sort z LINQ oraz jak interfejs IComparabale dodać < pls.Count.Count nie działa niestety. Pokazuje mi taki błąd: 'IEnumerable<PlayerView>' does not contain a definition for 'Count' and no extension method 'Count' accepting a first argument of type 'IEnumerable<PlayerView>' could be found (are you missing a using directive or an assembly reference?)

Pokazuje jakby takie polecenie Count w ogóle nie istniało.
komentarz 21 czerwca 2018 przez NowyUrzydgownig Mądrala (5,090 p.)
nie wywolujesz pls.Count.Count, a pls.Count(); Jeżeli chodzi o Sort to pomyliłem się nie jest on częścią LINQ. Wciąż możesz jednak zaimplementować interfejs IComparable do swojego PlayerView. Jak to zrobić masz opisane w internecie. Natomiast, aby wywołać Sort z IEnumerable, będziesz musiał zrzutować IEnumerable do jakiejś kolekcji. Możesz po prostu zamiast przekazywać IEnumerable, prosić o przekazanie ICollection. I tak przechodzisz po całej liście foreachem, więc nie będzie miało to żadnego znaczenia.
komentarz 21 czerwca 2018 przez xxkondzioxx15 Obywatel (1,440 p.)
private void PrintPls(StringBuilder sb, string templ, IEnumerable<PlayerView> pls)
	{
		foreach (PlayerView playerView in pls)
		{
			string text = playerView.ToString(false, true, false);
			for (int i = 0; i < pls.Count(); i++)
            {
			sb.AppendLine(string.Format(templ, new object[]
			{
				i,
				text,
				playerView.Kills,
				playerView.Deaths,
				playerView.PlayerPing,
				playerView.PlayerFps,
				(!playerView.IsHost || playerView.bot) ? string.Empty : Bs.TR("Host", null, null),
				string.Empty
			}));
			}
		}
	}

Odnoście pls.Count(); to masz to na myśli?

 

1
komentarz 21 czerwca 2018 przez NowyUrzydgownig Mądrala (5,090 p.)
Tak. Jeżeli automatycznie nie dodaje ci namespace System.Linq; to go dodaj.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 212 wizyt
pytanie zadane 7 października 2020 w Python przez Dawid Popławski Nowicjusz (160 p.)
+1 głos
1 odpowiedź 526 wizyt
0 głosów
1 odpowiedź 892 wizyt
pytanie zadane 17 października 2019 w C# przez pitersooon98 Nowicjusz (200 p.)

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...