Boka gympass (array?)
Sista delen av uppgiften:
Nåt jag försökt med är att skapa en tvådimensionell array - vilket inte är något problem om jag bara väljer siffror och använder mig av integer eller string och bara bokstäver. men jag vill skapa en array med { {1a, 1b, 1c}, {2a, 2b, 2c}, {3a, 3b, 3c} }. Får det inte att fungera när jag blandar siffror och bokstäver. Sen vet jag inte om jag tänker rätt med att skapa en sån typ av array som start till uppgiften.
Man kan göra så, men jag skulle bara representera platserna med två tal, från 0 till 2, och ha en liten array med heltalsindex som säger om en plats är bokad. Namngivningen skulle jag sköta vid inmatningen och utmatningen.
Hur skriver du när det inte fungerar?
public class Bokning {
public static void main(String[] args) {
int[][] Spinning = new int[3][3];
int[][] Yoga = new int[3][3];
int[][] Aerobics = new int[3][3];
System.out.println ("test" + Spinning[0][0]);
outputArray(Spinning);
}
}
Jag har ju som knappt kommit igång för att jag känner att jag inte kom förbi första steget ens.
Menar du att 0 till 2 ska motsvara 1a, 1b, 1c?
Okej, vid in och utmatning. Jag har ju skrivit ett program för att logga in med personnummer och sen ska man då kunna boka, hur skulle det se ut?
Jag menade att 0 till 2 som första index motsvarar 1 till 3, och andra indexet a till c.
Laguna skrev:Jag menade att 0 till 2 som första index motsvarar 1 till 3, och andra indexet a till c.
Ok då kan man köra string och int i varsin. Men hur kan man då avgöra om det är bokat eller inte?
Du får väl lägga nåt bra värde i varje cell i arrayen.
Förstår inte hur jag ska få ihop det på det sättet faktiskt. Ser det ej framför mig, har inte kunskap nog antar jag.
Försöker få ihop detta på något vis.
Nu har du bytt typ. Du hade int förut.
Jo precis, kan inte skriva "1a" t.ex. med int. Är det någon som kan komma med något som kan hjälpa mig lite på vägen? Förstår inte hur jag ska tilldela t.ex Yoga[0][0] alltså "1a" till bokad eller ej bokad.
Laguna skrev:Man kan göra så, men jag skulle bara representera platserna med två tal, från 0 till 2, och ha en liten array med heltalsindex som säger om en plats är bokad. Namngivningen skulle jag sköta vid inmatningen och utmatningen.
Håller med Laguna om att sköta namngivningen av platserna vid inmatning och utmatning.
Varje plats kan förslagsvis vara av typen boolean där false betyder ledig och true betyder bokad.
Det går att göra på flera sätt, och om det fungerar kan man inte säga att det är helt och hållet fel, så det behövs lite erfarenhet för att få till nåt bra. Jag kommer ihåg att jag kunde vara rätt förvirrad ibland i början.
Vi har två egenskaper hos en plats (om vi tittar på en viss aktivitet i taget): dess namn och huruvida den är bokad. Det ena är en statisk egenskap som inte ändrar sig, och den andra ändrar sig och det är den vi vill hålla reda på. Namnet kan vi antingen spara i någon datastruktur, som du har gjort, vilket alltså inte är fel, eller konstruera när vi behöver det, eftersom regeln för namnen är så enkel.
Det centrala är kopplingen mellan en plats och dess bokningsstatus. Statusen kan bara vara en av två saker: bokad eller icke bokad, så vi kan välja en datatyp som bara har två värden, nämligen boolean. Den har värdena true och false och inget annat, så vi får bestämma oss för om true betyder bokad eller icke bokad. Bokad verkar mer praktiskt här, tycker jag. Ett alternativ är att använda en större datatyp, t.ex. int, och bara använda två av dess värden, t.ex. 0 och 1, men när boolean passar så bra är det bäst att ta den.
Det finns mycket att fundera på när man vill representera informationen i datastrukturer även i ett så här litet problem, och du förväntas inte kunna tänka på allt detta, men sådant som jag tänker på är:
1) Kommer platsnamnen kanske att ändras i framtiden? I så fall kan det vara bra att ha dem i en egen array. Kommer de kanske att ha namn som inte direkt avspeglar deras läge?
2) Är det viktigt att ha en tydlig koppling mellan platserna och vilken rad och kolumn de är i? Om inte så kan vi helt enkelt ge varje plats ett nummer från 1 till 9, eller 0 till 8.
3) Kommer platserna att bli fler eller raderna/kolumnerna att ändras? Kommer arrangemanget alltid att vara rektangulärt?
4) Vill man rita upp läget med en bild?
5) Vill man ge användaren möjlighet att ange en viss rad eller viss kolumn (och inte en bestämd plats)?
6) Kommer man att vilja ge en platsstatus fler värden än bokad/icke bokad? (T.ex. "trasig".)
7) Kommer man att vilja ge en plats fler egenskaper (t.ex. cykel gammal modell eller cykel ny modell)?
Nu ska vi inte bry oss om nånting av det där, men den typen av frågor har man i huvudet när man väljer datarepresentation och operationer.
Den mest komplicerade operationen i sammanhanget är att läsa in namnet på en plats och kolla om den är bokad, så titta på den och bryt ner den i steg och vilka datastrukturer du behöver. Användaren skriver t.ex. "2a" och programmet ska hitta rätt plats i datastrukturerna och meddela om den var bokad.
Man kan hitta på egna klasser/typer och det finns avancerade inbyggda typer som kan vara lämpliga att använda, men jag vet inte hur mycket ni har lärt er än. Int, string, array, är det det hela?
Tack, ska försöka lära mig hur input och output fungerar med boolean. Rekommenderar du fortfarande en index för 1-3 och en för a-c?
Jag har nu lyckats göra ett bokningsprogram i en separat fil som heter "Bokning.java", den fungerar där i den isolerade miljön. Men jag vill kunna sätta igång den bokningen från en meny som ser ut såhär(visar bara val 3 av menyn):
case 3: {
System.out.println("Logga in med personnumer, 10 siffror utan bindestreck");
Scanner sepe2 = new Scanner(System.in);
String pan3 = sepe2.nextLine();
if (luhnCheck(pan3) == true) {
System.out.println("du är nu inloggad");
}
else {
System.out.println("Personnumret är felaktigt");
break;
}
Jag vill att den kör "bokning.java" om användaren lyckas logga in, hur gör jag?