Zelim napravit jednostavni meni gdje korisnik moze izabrati izmedju Kontinenta i
drzave a nakon toga da izabere koji kontinent ili koja drzava
Ispod se nalazi kod koji sam pisao
pa ako ga neko moze preuredit da radi kako treba bio bi mu zahvalan.
using System;
class Meni
{
public static void Main()
{
char izbor;
for (; ; )
{
do
{
Console.WriteLine("Izaberite");
Console.WriteLine("1 Kontinent");
Console.WriteLine("2 Drzava");
Console.WriteLine("-=-=-=-=-=-=-");
do
{
izbor = (char)Console.Read();
}
while (izbor == '\n' | izbor == '\r');
}
while (izbor < '1' | izbor > '2' & izbor != 'q');
if (izbor == 'q') break;
switch (izbor)
{
case '1':
{
char kontinenti;
Console.WriteLine("Izaberite neki Kontinent");
Console.WriteLine("1 Amerika");
Console.WriteLine("2 Australija");
Console.WriteLine("3 Afrika");
Console.WriteLine("4 Azija");
Console.WriteLine("5 Europa");
Console.WriteLine("------------------------");
kontinenti = (char)Console.Read();
if (kontinenti == '1')
{
Console.WriteLine("Amerika");
}
if (kontinenti == '2')
{
Console.WriteLine("Australija");
}
if (kontinenti == '3')
{
Console.WriteLine("Afrika");
}
if (kontinenti == '4')
{
Console.WriteLine("Azija");
}
if (kontinenti == '5')
{
Console.WriteLine("Europa");
}
}
break;
case '2':
{
char drzave;
Console.WriteLine("Izaberite neku Drzavu");
Console.WriteLine("1 Germany");
Console.WriteLine("2 France");
Console.WriteLine("3 India");
Console.WriteLine("++++++++++++++++++++++++");
drzave = (char)Console.Read();
if (drzave == '1')
{
Console.WriteLine("Germany");
}
if (drzave == '2')
{
Console.WriteLine("France");
}
if (drzave == '3')
{
Console.WriteLine("India");
}
}
break;
}
}
}
}
- +/- sve poruke
- ravni prikaz
- starije poruke gore
using System;
class Meni
{
public static void Main()
{
char izbor;
for (; ; )
{
do
{
Console.WriteLine("Izaberite");
Console.WriteLine("1 Kontinent");
Console.WriteLine("2 Drzava");
Console.WriteLine("-=-=-=-=-=-=-");
do
{
izbor = (char)Console.Read();
}
while (izbor == '\n' | izbor == '\r');
}
while (izbor < '1' | izbor > '2' & izbor != 'q');
if (izbor == 'q') break;
switch (izbor)
{
case '1':
{
char kontinenti;
Console.WriteLine("Izaberite neki Kontinent");
Console.WriteLine("1 Amerika");
Console.WriteLine("2 Australija");
Console.WriteLine("3 Afrika");
Console.WriteLine("4 Azija");
Console.WriteLine("5 Europa");
Console.WriteLine("------------------------");
kontinenti = (char)Console.Read();
if (kontinenti == '1')
{
Console.WriteLine("Amerika");
}
if (kontinenti == '2')
{
Console.WriteLine("Australija");
}
if (kontinenti == '3')
{
Console.WriteLine("Afrika");
}
if (kontinenti == '4')
{
Console.WriteLine("Azija");
}
if (kontinenti == '5')
{
Console.WriteLine("Europa");
}
}
break;
case '2':
{
char drzave;
Console.WriteLine("Izaberite neku Drzavu");
Console.WriteLine("1 Germany");
Console.WriteLine("2 France");
Console.WriteLine("3 India");
Console.WriteLine("++++++++++++++++++++++++");
drzave = (char)Console.Read();
if (drzave == '1')
{
Console.WriteLine("Germany");
}
if (drzave == '2')
{
Console.WriteLine("France");
}
if (drzave == '3')
{
Console.WriteLine("India");
}
}
break;
}
}
}
}
Uoci ovo oznaceno zelenim markerom - vrtis petlju sve dok se ne stisne broj koji poziva neku naredbu iz pocetnog izbornika.
Sad uoci ovo sa zutim markerom - uopce ne vrtis petlju! Dakle, kao prvo tu riskiras da korisnik ne upise valjani broj drzave. Kao drugo - sad se mozda pitas zbog cega ti preleti preko svega toga? Zato sto, kad korisnik upise neki broj i stisne Enter na prvom izborniku, funkcija Read skine samo prvi znak - znaci, skine samo broj 1 ili 2, a u bufferu od tipkovnice ostanu dva znaka CR+LF (to su znakovi za tipku Enter)!
Rjesenje? U drugome meniju prije, prije nego radis Console.Read() napisi Console.ReadLine(). Znaci:
Console.ReadLine();
do { kontinenti = (char)Console.Read(); }
while (kontinenti < '1' | kontinenti > '5');
Da, preporucam ti i da svih tih if-then za drzave i kontinente koristis switch - bit ce ti puno preglednije. Takodjer, koristis praznu for-petlju - umjesto toga, mozes imati jedan vanjski do-while (izbor != '3') pa da ti izbor '3' znaci izlaz iz programa.
Mnogo hvala na odgovoru.Pokusat cu ovo skuzit hvala jos jednom