1 svar
444 visningar
magarnabulli är nöjd med hjälpen
magarnabulli 2 – Fd. Medlem
Postad: 4 sep 2021 11:19

Varför kan jag inte anropa metoder i Main? Bibliotekarie uppgift, PRG2 C#

Kommer att bli galen snart, lärarna svarar ej pga helg och jag har totalfastnat. 

Jag har skapat metoder under Bibliotekarie klassen, meningen är att anropa dessa i mina switch cases men av någon anledning så funkar det inte... copy pastar koden här under, hoppas verkligen att någon snäll själ kan hjälpa mig!

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace Bokhyllan
{
//Skapar bok klassen
public class Bok
{
public string Titel;
public string Författare;
public int Publiceringsår;
public int sidor;
public string boktyp;
//skapar bokklassens egenskaper
public Bok(string inTitel, string inFörfattare, int inÅr, int inSidor)
{
Titel = inTitel;
Författare = inFörfattare;
Publiceringsår = inÅr;
sidor = inSidor;
}
}
//Skapar underklassen "Tidskrift"
public class Tidskrift : Bok //underklass tidsskrift
{
public Tidskrift(string inTitel, string inFörfattare, int inÅr, int inSidor)
: base(inTitel, inFörfattare, inÅr, inSidor)
{
boktyp = "Tidskrift";
}
public override string ToString()
{
return "\n\tBoken " + Titel + "\n\tSkriven av " + Författare
+ "(" + Publiceringsår + ")" + " är en " + boktyp + " på " + sidor + " sidor .Tryck [enter] om du inte hittar" +
"resten av dina sparade böcker.";
}
}
//skapar underklassen "Novellsamling"
public class Novellsamling : Bok
{
public Novellsamling(string inTitel, string inFörfattare, int inÅr, int inSidor)
: base(inTitel, inFörfattare, inÅr, inSidor)
{
boktyp = "Novellsamling";
}
public override string ToString()
{
return "\n\tBoken " + Titel + "\n\tSkriven av " + Författare
+ "(" + Publiceringsår + ")" + " är en " + boktyp + " på " + sidor + " sidor .Tryck [enter] om du inte hittar" +
"resten av dina sparade böcker.";
}
}
//skapar underklassen "Roman"
public class Roman : Bok //underklass roman
{
public Roman(string inTitel, string inFörfattare, int inÅr, int inSidor)
: base(inTitel, inFörfattare, inÅr, inSidor)
{
boktyp = "Roman";
}
public override string ToString()
{
return "\n\tBoken " + Titel + "\n\tSkriven av " + Författare
+ "(" + Publiceringsår + ")" + " är en " + boktyp + " på " + sidor + " sidor .Tryck [enter] om du inte hittar" +
"resten av dina sparade böcker.";
}

}
//Bibliotekarie klassen
class Bibliotekarie
{
//privat boklista för at spara nya böcker
private List<Bok> Boklista;
//hämta boklista metod, skriver ut alla sparade böcker
public void HämtaBoklista()
{
Console.Clear();
Console.WriteLine("\n\t\t **** Bokregister****");
//så länge boklistan inte är tom
if (Boklista.Count > 0)
{
//för varje bok i listan
foreach (Bok bok in Boklista)
{
//skriv ut bok
Console.WriteLine("\n\t\t" + bok);
Console.ReadLine();
}
}
else
{
//meddela att listan är tom
Console.WriteLine("Det finns inga registrerade böcker!");
}
}
// public metod för att skapa ny bok
public void SkapaBok()
{
Console.WriteLine("\n\tVilken titel har boken? ");
//titel tas emot
string inTitel = Console.ReadLine();
Console.WriteLine("\n\t Vem är författaren?");
//författare tas emot
string inFörfattare = Console.ReadLine();
Console.WriteLine("\n\t\tVilket år publicerades boken?");
//publiceringsår tas emot
int inÅr;
Int32.TryParse(Console.ReadLine(), out inÅr);
Console.WriteLine("\n\t\t Hur många sidor lång är boken?");
//antal sidor tas emot
int inSidor;
Int32.TryParse(Console.ReadLine(), out inSidor);
//val mellan boktyp
Console.WriteLine("Vilken typ av bok är det? Välj mellan +" +
"\n\t\t [1] Roman" + "\n\t\t [2]Tidskrift" + "\n\t\t[3]Novellsamling");
//felhantering val vid boktyp
Int32.TryParse(Console.ReadLine(), out int Typ);
//om inmatning är 1
if (Typ == 1)
{
//spara som tidskrift
Tidskrift nyTidskrift = new Tidskrift(inTitel, inFörfattare, inÅr, inSidor);
Boklista.Add(nyTidskrift);
}
//om inmatning är 2
else if (Typ == 2)
{
//spara som roman
Roman nyRoman = new Roman(inTitel, inFörfattare, inÅr, inSidor);
Boklista.Add(nyRoman);
}
//om inmatning är 3
else if (Typ == 3)
{
//spara som novellsamling
Novellsamling nyNovellsamling = new Novellsamling(inTitel, inFörfattare, inÅr, inSidor);
Boklista.Add(nyNovellsamling);
}
else
{
//om inte 1, 2 eller 3 väljs
Console.WriteLine("Välj mellan [1], [2] och [3]!");
Console.ReadLine();
}
}
//public metod för att söka efter böcker, linjär algoritm
public void SökBok()
{
Console.WriteLine("Sök efter titel:");
string sök = Console.ReadLine();
//+1 för varje bok i listan
for(int i=0; i < Boklista.Count; i++)
{
foreach (Bok bok in Boklista)
{
if (bok.Titel == sök)
{
Console.WriteLine("\n\t\tBoken med titeln "+sök + " finns på plats" + Boklista[i]);
}
else
{
Console.WriteLine("\n\t\tNågon bok med titeln " + sök + " hittades inte.");
}
}
}
}
public void RaderaLista()
{
Console.Clear();
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("\n\t\t **** RADERA REGISTER****");
Console.ResetColor();
Console.WriteLine(" \n\t\tTryck [1] för att radera register och [2] om du ångrat dig.");
//felhantering vid inmatning
Int32.TryParse(Console.ReadLine(), out int delete);
//om inmatning är 1
if (delete == 1)
{
//radera listan
Boklista.Clear();
}
//om inmatning är 2
if (delete == 2)
//gå tillbaka till meny utan ändringar
Console.WriteLine("\n\t\t Phew, Okej då går vi tillbaka till menyn!");
else
{
//om inte val har gjorts
Console.WriteLine("\n\t\t Du måste välja [1] eller [2] !");
Console.ReadLine();
}
}
}
class Program
{
static void Main(string[] args)
{
//initierar menyloop
bool isRunning = true;
//så länge menyloop är igång
while (isRunning)
{
Console.WriteLine("\n\t\t **** Välkommen till Bokhyllan! ****");
Console.WriteLine("\n\t [1] Registrera bok");
Console.WriteLine("\n\t [2] Visa register");
Console.WriteLine("\n\t [3] Radera register");
Console.WriteLine("\n\t [4] Avsluta");
//felhantering inmatning
Int32.TryParse(Console.ReadLine(), out int val);
//menyval switch
switch (val)
{
//menyval 1, registrera en bok

case 1:
Console.WriteLine("\n\t\t***REGISTRERA NY BOK***");


break;

case 2:
//menyval 2, bokregister

break;
case 3:
//menyval 3, rensa register


break;
case 4:
//menyval 4, asvlut
Console.WriteLine("\n\t\t Hejdå!");
//menyloop avslutas
isRunning = false;
break;

}
}
}
}
}

magarnabulli 2 – Fd. Medlem
Postad: 5 sep 2021 09:21

Har löst det! 

Om det är någon som också fastnat :

 

Min bibliotekarieklass är inte static, därför behövde jag skapa ett objekt för att anropa mina metoder :

Utanför switch :

Bibliotekarie Åsa = new Bibliotekarie();

I mina cases :

Åsa.SkapaBok();

 

osv.

Svara Avbryt
Close