- Matteo005: 9800X3D
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Gurulunk, WAZE?!
- sellerbuyer: Te tudod, mi mennyit fogyaszt az otthonodban?
- gban: Ingyen kellene, de tegnapra
- Luck Dragon: Asszociációs játék. :)
- DeFranco: Tanuljunk angolul játékosan! - Duolingo
- aquark: Jó platformer játékokat keresek!
- MaxxDamage: Vizes Laptop Hűtés? Lehetséges? Igen!
- sellerbuyer: Milyen laptopot vegyek? Segítek: semmilyet!
Új hozzászólás Aktív témák
-
Zalanius
tag
Még egy variáció alább (.net 4.5+). A fenti kettő amúgy jobb válasz, de eljátszottam kicsit a feladattal async eszközökkel, hátha érdekes lehet. Nem a legszebb a "novekvo" ilyen használata, de ennél a példánál belefér az ilyesmi is, nincsenek más konkurrens részek, amikre még tekintettel kellene lenni. A ReadKey hallgatózás hátránya, hogy ha el is értük a maxot, egy ESC akkor is kell, mielőtt a "Kész..." megjelenhet.
static void Main(string[] args)
{
Console.WriteLine("Befejezés: ESC. Irányváltás: SPACE.");
CancellationTokenSource cts = new CancellationTokenSource();
const int MAX = 1000;
int x = 0;
bool novekvo = true;
Task t1 = Task.Factory.StartNew(async () =>
{
while (!cts.Token.IsCancellationRequested && x < MAX)
{
Console.Write(novekvo ? ++x : --x);
Console.Write(" ");
await Task.Delay(50);
}
}, cts.Token);
ConsoleKeyInfo keyInfo = Console.ReadKey(true);
while (keyInfo.Key != ConsoleKey.Escape)
{
if (keyInfo.Key == ConsoleKey.Spacebar)
{
novekvo = !novekvo;
}
keyInfo = Console.ReadKey(true);
}
cts.Cancel();
Console.WriteLine("Kész. A kilépéshez nyomj meg egy gombot.");
Console.ReadKey();
} -
nmate91
tag
using System;
using System.Threading;
namespace ConsoleApp1
{
class Program
{
static int Increase(int count)
{
do
{
while (!Console.KeyAvailable)
{
Console.WriteLine($"count: {count++}");
Thread.Sleep(25);
}
} while (Console.ReadKey(true).Key != ConsoleKey.Spacebar);
return count;
}
static int Decrease(int count)
{
do
{
while (!Console.KeyAvailable)
{
Console.WriteLine($"count: {count--}");
Thread.Sleep(25);
}
} while (Console.ReadKey(true).Key != ConsoleKey.Spacebar);
return count;
}
static void Main(string[] args)
{
Console.WriteLine("Press Space to change, and ESC to stop");
do
{
int count = 0;
count = Increase(count);
count = Decrease(count);
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);
}
}
}Hasonlo, decrease utan megall, ujra spacet nyomva indul, nullarol. Ha nem nullarol kell, csak ki kell tenni eggyel kijjebb a count deklaralast. Ha kell az 1000 hatarnak, csak a do while-nal kondiciokent kikotod.
-
joysefke
veterán
Az egyetlen nehézséget az okozza ebben, hogy a Console.ReadKey() blokkol ha éppen nem volt megnyomva billentyű, ekkor addig vár amíg le nem nyomsz egy billenytűt, azt kiolvassa és csak azután megy tovább a végrehajtás. A
Console.KeyAvailable
segítségével ezt ki lehet küszöbölni, ennek akkor ha true az értéke, akkor volt lenyomva billentyű, amelynek az értéke bufferbe került, ezt ki lehet olvasni a Console.ReadKey()-jel, anélkül, hogy az blokkolna.using System;
using System.Threading;
// NonblockingReadKey
class Program
{
// N > 1
static void Count(int N)
{
//this will store the pressed key
ConsoleKeyInfo consoleKey;
// counter will be the running variable
// starting to count down from N
int counter = N;
// when true: counting down
// when false counting up
bool countingDown = true;
// ends one below zero when counting down and one above N when counting up
while (!(counter==-1 && countingDown) && !(counter == N+1 && !countingDown) )
{
Console.Clear();
Console.Write(counter);
Thread.Sleep(250);
// Console.KeyAvailable == true only if there was a keypress
//in the console
if (Console.KeyAvailable)
{
// reads the keypress
consoleKey= Console.ReadKey();
// reads any remaining keypresses from the buffer
// if you have pressed more then one keys during sleep-time
while (Console.KeyAvailable) consoleKey = Console.ReadKey();
// Immediatelly breaks at reading ESC key
if (consoleKey.Key == ConsoleKey.Escape)
{ Console.Clear(); break; }
//switches the counting direction
// true -> false
// false -> true
// countingDown ^= true; ;)
countingDown = !countingDown;
}
//increments or decrements the counter according to
// the value of countingDown
if (countingDown == true) { --counter; }
else { ++counter; }
}
Console.Clear();
Console.WriteLine("Finished!!!");
}
static void Main(string[] args)
{
Count(100);
}
} -
joysefke
veterán
using System;
class Program
{
static void Main(string[] args)
{
bool succes = false;
float num1 = 0;
float num2 = 0;
do
{
Console.WriteLine("Kérem az összeadni kívánt számokat.");
Console.Write("Egyik szám: ");
string a = Console.ReadLine();
Console.Write("Másik szám: ");
string b = Console.ReadLine();
succes = float.TryParse(a, out num1) && float.TryParse(b, out num2);
if (!succes)
{
Console.WriteLine("");
Console.WriteLine("Nem számot adtál meg!");
}
}
while (succes != true);
float osszeg = num1 + num2;
Console.CursorVisible = false;
Console.WriteLine("A két szám összege= " + osszeg);
}
} -
joysefke
veterán
Az előző hsz, vagy ez, int.Parse(string)-gel, de itt manuálisan kell elkapni az exceptiont
a
bool success
változó tárolja, hogy sikeres volt-e a beolvasás, ado-while
ciklus addig fog próbálkozni a beolvasással, míg az egyszer sikeres nem lesz. A string -> int átalakítást azint.Parse(string)
végzi, ha ez sikeres volt (mert a user tényleg számot adott be), akkor a következő végrehajtott utasítás a success = true; lesz. Ellenkező esetben létrejön egy exception és a végrehajtás acatch(Exception) {...}
blokkban folytatódik anélkül, hogy a success változót átállítottuk volna, ebben az esetben a do-while ciklus újra lefut.class Program
{
static void Main(string[] args)
{
int num=0;
bool success = false;
do
{
Console.Write("Enter number : ");
string str = Console.ReadLine();
try
{
num = int.Parse(str);
success = true;
}
catch (Exception ex)
{
Console.WriteLine("Not a valid number, try again!");
}
} while (success != true);
Console.WriteLine($"You typed in the following number: {num}");
}
} -
Jester01
veterán
Int32.TryParse
vagy elkapod az exceptiont.
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Váratlanul kapott a piac egy új 16 GB-os Radeont
- PlayStation 5
- A fociról könnyedén, egy baráti társaságban
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Kiegészítette processzorflottáit az AMD
- AMD Navi Radeon™ RX 9xxx sorozat
- Milyen okostelefont vegyek?
- Futás, futópályák
- Facebook és Messenger
- További aktív témák...
- Apple Watch Ultra Black Titanium 49 mm Black Milanese Loop 49 mm Ocean Band 49 mm M/L Trail Lo
- Eladó Gaming PC Ryzen 7 7800X3D, RX 9070XT, 32GB RAM
- Samsung Galaxy Watch6 LTE 44mm, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 12 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 15 128GB, Kártyafüggetlen, 1 Év Garanciával
- ÚJ Microsoft Surface Laptop 7 13.8" 2K - 120Hz Érintő - Snapdragon X Elite - 16GB - 512GB-2 év gari
- Samsung Galaxy S24 Ultra / 12/256GB / Gyári független / 12Hó Garancia
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! ASUS C246M i5 9400F 16GB DDR4 250GB SSD 1TB HDD GTX 1660 Super 6GB Zalman N4 Zalman 600W
- Azonnali készpénzes Sony Playstation 4 Slim / PS4 Pro felvásárlás személyesen/csomagküldéssel
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest