Mi lehet a probléma a c# kódomban?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace gyak2
{
class Program
{
static void Main(string[] args)
{
List<string> emberek = new List<string>();
do
{
Console.WriteLine("Adja meg az ember nevét: ");
string ember = Console.ReadLine();
emberek.Add(ember);
}while(emberek[emberek.Count - 1] != "");
emberek.RemoveAt(emberek.Count - 1);
if (emberek.Count % 2 == 0)
{
Console.WriteLine("első: {0}, középső kettő: {1},{2}, utolsó: {3}", emberek[0], emberek.Count /2 -1, emberek.Count /2, emberek.Count -1 );
}
else
Console.WriteLine("első: {0}, középső: {1}, utolsó: {2}", emberek[0], emberek.Count / 2, emberek.Count - 1);
Console.ReadLine();
}
}
}
-1. Tessék kódmegosztó oldalt használni - hastebin, pastebin, ghostbin,... - jobban áttekintehtőbbé teszi a kódot.
0. Amelyik könyvtárakra nincs feltétlenül szükség, azokat ne importáld be.
1. A fő problémát az okozza, hogy a kiíratásnál, a középső és az utolsó elemeknél nem magát az elemet írod ki, hanem az indexüket.
Szóval e helyett:
emberek.Count / 2 - 1,
emberek.Count / 2,
emberek.Count - 1
ez kéne
emberek[emberek.Count / 2 - 1],
emberek[emberek.Count / 2],
emberek[emberek.Count - 1]
Szóval:
Az a baj, hogy fogalmad sincs, mit csinálsz.
Létrehozol egy LISTÁT!
Abba addig olvasol, míg a count-1edik tagja nem üres string akarna lenni. Segítek: stringet nem ellenőrzünk !=vel, hanem equals függvény.
Második hiba ugyanebben a sorban: Listát nem tudsz tömbösen indexelni, ilyen hogy emberek[akármennyi] nem használatos, mert totál veszélyes, főleg üres listára, hanem emberek.get(emberek.Count-1)
(újabb észrevétel közben, simán Count nem létezik, meg kell adni a scope-ját is).
És azon kívül is iszonyú ronda a kód...
"Az a baj, hogy fogalmad sincs, mit csinálsz."
Ezen kommented alapján inkább neked nincs fogalmad, hogy mit csinálsz.
"Segítek: stringet nem ellenőrzünk !=vel, hanem equals függvény."
De ellenőrzünk, minden további nélkül.
"Listát nem tudsz tömbösen indexelni"
De, tud.
"ilyen hogy emberek[akármennyi] nem használatos, mert totál veszélyes, főleg üres listára, hanem emberek.get(emberek.Count-1)"
De, használatos és teljesen veszélytelen.
"simán Count nem létezik, meg kell adni a scope-ját is"
De, létezik.
"És azon kívül is iszonyú ronda a kód..."
Teljesen kezdőktől nem igazán értelmes elvárás, hogy gyönyörű kódot írjanak.
Ha figyelnek a változók értelmes elnevezésére, az már nagyon jó irány.
„Teljesen kezdőktől nem igazán értelmes elvárás, hogy gyönyörű kódot írjanak.”
Aki ezenkívül még a Gyakorin is kezdő, az nem is tudja, hogy az oldal eltünteti az indentálást, és minden lezárt sor után egy üres újabbat szúr be, ezért nem könnyű megítélni, hogy a kód milyen lehetett eredeti formájában. Remélhetőleg legközelebb már kódmegosztó oldalon közli, a szépészeti megjegyzések maradjanak arra az időre.
Tudom jól, és nem is arra gondoltam tabaki.
Threading.Task namespace például mire kell?
Vagy mondhatom azt is, hogy előbb bepakol egy listába, és csak utána ellenőrzi, és törli... (de hogy konstruktív is legyek): a do-ba mehetne:
if("".Equals(ember) )
break;
Ez sem olyan szép, de még mindig jobb, mint utólag törölgetni.
if("".Equals(ember) )
Ilyen javás behányásokkal ne égesd már magad plez.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!