1 svar
45 visningar
g4l3n 133
Postad: 14 sep 2019

Arrays med while och for-loopen

Hej,

har fått till uppgift att skapa en meny med hjälp av arrays (vektorer). 

Användaren ska kunna skriva in 5 föremål som ska sparas och kunna skrivas ut. Ska även kunna söka bland föremålen.

Jag ska använda mig av while och for-loopen.

Får dock ett error på mitt case 4. inMat: false; så jag kan inte köra mitt program. 

Får 1 en varning på if (inne[i] == sökOrd);, att ';' "possible mistaken empty statement"

Får 1 en varning på inMat: false; att jag inte har refererat inMat.

Nedan är min kod. Är det någon som kan vara så vänlig och förklara vad jag gjort fel och kanske visa hur jag kan göra?
Tacksam för all hjälp!

static void Main(string[] args)
{
bool inMat = true;

string[] inne = new string[5];
int tal = 0;

for (int i = 0; i < inne.Length; i++)

Int32.TryParse(Console.ReadLine(), out tal); //Lägger i yttersta blocket så det gäller anna underblock

while (inMat)
{
Console.WriteLine("Hej och välkommen till ryggsäcken!");
Console.WriteLine("Välj ett av följande val: ");

string[] ryggan = new string[5];
ryggan[0] = "";
ryggan[1] = "[1]Skriv in ett föremål";
ryggan[2] = "[2]Skriv ut innehåll";
ryggan[3] = "[3]Rensa innehållet";
ryggan[4] = "[4]Avsluta";

int menyVal = Convert.ToInt32(Console.ReadLine());

switch (menyVal)
{
case 1:
// använderen skirver in föremål
Console.Write("Skriv in max 5 föremål: ");

inne[0] = Console.ReadLine(); //användarens egen inmatning
inne[1] = Console.ReadLine();
inne[2] = Console.ReadLine();
inne[3] = Console.ReadLine();
inne[4] = Console.ReadLine();

for (int i = 0; i < inne.Length; i++)
{
Console.WriteLine(ryggan[i]);
}
Console.ReadLine();

break;

case 2:
Console.WriteLine("Sparade förmål");
Console.Write("innehåll[0] + innehåll[1] + innehåll[2] + innehåll[3] + innehåll[4]"); //Skriver ut föremål från case 1
Console.Read(); //Så vi kan se föremålen
break;

case 3:
Console.WriteLine("Skriv in sökord: ");
string sökOrd = Console.ReadLine(); // användaren skriver in sökord

for (int i = 0; i < inne.Length; i++) //för att kunna söka genom inne[]förmålen med sökOrd
{
if (inne[i] == sökOrd);
Console.WriteLine(inne[i]);
}

break;
case 4:

default:
inMat: false; // avsluta programmet
break;

}
}
}

Laguna Online 6037
Postad: 15 sep 2019 Redigerad: 15 sep 2019

Där det står inMat: false; ska det stå inMat = false; Tilldelning görs med likhetstecknet. Att det inte blir totalt fel i kompilatorn utan bara en varning beror på att det du skriver definierar en label, som man kan göra goto till någon annanstans ifrån. Den har samma namn som din variabel, men har inget med den att göra för det, så kompilatorn meddelar att den inte används. Att det sedan står false som sats ger den tydligen fel för.

 

I if (inne[i] == sökOrd); så kommer nästa sats efter villkoret att utföras om villkoret är sant. Nästa sats går fram till nästa semikolon, dvs. är helt tom här. Ta bort semikolonet.

Svara Avbryt
Close