Inlägg
@perost:
Precis, det var de jag tänkte också.
Försökt lösa det med genom denna kod i första for-loopen:
availableSodas[i]= Convert.ToInt32(Console.ReadLine());
Men det fungerar inte för att "Cannot implicitly convert type 'int' to 'sodas.Soda' "
Vill du hjälpa mig lite på traven?
Fastnat i C#
Hej,
Jag har en skoluppgift som jag suttit med några dagar men inte riktigt får till och tänkte om någon kan kika och se vad det är jag missar?
Programmet ska se ut enligt följande:
"I objektet sodacrate ska det finns en vektor som håller reda på 25 stycken flaskor. Varje element i
vektorn är ett namn som exempelvis ”coca-cola” eller ”Ramlösa”.
Observera att det ska vara just en vektor och inte en lista.
I sodacrate ska det finnas en switch-case meny där alternativen kopplas till olika metoder. Dessa
metoder är:
1. Lägga till en läsk i vektorn (läskbacken)
2. Skriva ut innehållet i vektorn (läskbacken)
3. Beräkna det totala värdet av backen och skriv ut på skärmen
4. Avsluta programmet"
Det jag inte lyckas med är att få programmet att skriva ut/lagra input från användaren. Det fungerar när det randomiseras ut 24 flaskor för att fylla läskbacken. Väljer jag då i menyn att jag vill skriva ut innehållet eller beräkna värdet så gör programmet det.
Om jag däremot väljer läsk en och en så skrivs ingenting ut när jag vill skriva ut innehållet/beräkna värdet.
Ser ni något jag inte ser? Här är koden:
using System;
namespace sodas
{
//En struct som innehåller värdena i form av namn och pris på läskerna.
public struct Soda
{
public string name;
public int price;
}
public class Sodacrate
{
//Skapar en vektor med 24 positioner.
//Håller reda på antalet flaskor.
private Soda[] sodaCrate = new Soda[24];
private int bottleNr = 0;
public void Run()
{
int choice;
Console.WriteLine("This is a program that helps you structure your sodacrate. Choose in the menu what you'd like to do");
//Skapar en meny.
//Loopar menyn tills användaren väljer Exit Program.
do
{
Console.WriteLine();
Console.WriteLine("***MENU***");
Console.WriteLine("1. Add new soda to crate");
Console.WriteLine("2. Show whats inside the crate.");
Console.WriteLine("3. Calculate total price for the Sodacrate."); ;
Console.WriteLine("0. Exit Program");
Console.WriteLine();
Console.Write("Enter the number representing what you want to do: ");
//Felhantering
//Ser till så att användaren endast kan mata in siffror.
try
{
choice = int.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine();
Console.WriteLine("***Error*** You can only use numbers. Please try again");
choice = 9;
continue;
}
Console.Clear();
//Ser till så användaren endast kan mata in giltiga siffror.
if ((choice > 3) || (choice < 0))
{
Console.WriteLine("***Error*** The number most be on the list. Please try again, press enter to continue");
Console.ReadLine();
Console.WriteLine();
}
else
{
//Här bestäms vilken metod som ska köras vid de olika menyvalen.
switch (choice)
{
case 1:
add_soda();
break;
case 2:
print_crate();
break;
case 3:
int sumSoda = calc_total();
Console.WriteLine("The total price of what's in your crate is: " + sumSoda + " SEK, press enter to go back.");
Console.ReadLine();
Console.Clear();
break;
}
}
} while (choice != 0);
}
//Skapar de 6 olika läskerna man ska kunna välja bland.
public Soda[] sodas()
{
Soda[] sodas = new Soda[6];
sodas[0].name = "Coca Cola";
sodas[0].price = 5;
sodas[1].name = "Coca Cola Zero";
sodas[1].price = 5;
sodas[2].name = "Fanta";
sodas[2].price = 5;
sodas[3].name = "Sprite";
sodas[3].price = 5;
sodas[4].name = "Julmust";
sodas[4].price = 5;
sodas[5].name = "Påskmust";
sodas[5].price = 5;
return sodas;
}
//Metoden för att lägga till en läsk i backen.
public void add_soda()
{
//Laddar in de olika läskerna.
Soda[] availableSodas = sodas();
int choice = 0;
Console.WriteLine();
Console.WriteLine("***SODAS***");
//Sriver ut möjliga läskflaskor och deras pris.
for (int i = 0; i < availableSodas.Length; i++)
{
Console.WriteLine("{0}. {1}, {2}kr", i + 1, availableSodas[i].name, availableSodas[i].price);
}
Console.WriteLine("7. Randomise 24 sodabottles.");
Console.WriteLine();
Console.Write("What Soda do you want to add to the crate: ");
//Felhantering
//Ser till att användaren endast matar in siffror.
try
{
choice = int.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine("Error. You can only use numbers. Please try again, press enter");
Console.ReadLine();
Console.WriteLine();
choice = 10;
}
Console.Clear();
if (choice == 10)
{
}
//Ser till så att användaren endast matar in giltiga siffror.
else if ((choice < 1) || (choice > 7))
{
Console.WriteLine("Error. The number most be on the list. Please try again, press enter");
Console.ReadLine();
Console.WriteLine();
}
//Om backen är full meddelas användaren här.
else if (bottleNr == 24)
{
Console.WriteLine("The sodacrate is full, you can't add more.");
}
//För choice 7 (randomiserat val) används Random rnd metoden.
else if (choice == 7)
{
Random rnd = new Random();
//Loopar tills läskbacken är fylld.
for (int i = bottleNr; i < sodaCrate.Length; i++)
{
sodaCrate[i] = availableSodas[rnd.Next(availableSodas.Length)];
bottleNr++;
}
}
}
//Metoden för att skriva ut vad som är i läskbacken.
public void print_crate()
{
Console.WriteLine();
Console.WriteLine("Your Sodacrate: ");
//Skriver ut alla läskflaskor som finns i läskbacken.
for (int i = 0; i < bottleNr; i++)
{
Console.WriteLine("{0}. {1}, {2}kr", i + 1, sodaCrate[i].name, sodaCrate[i].price);
}
Console.WriteLine("Press Enter.");
Console.ReadLine();
}
//Metod för att räkna ut priset på innehållet i backen.
public int calc_total()
{
Console.WriteLine();
int totalPrice = 0;
//Går igenom alla läskflaskor i läskbacken och lägger till deras pris till totalpriset.
for (int i = 0; i < bottleNr; i++)
{
totalPrice = totalPrice + sodaCrate[i].price;
}
return totalPrice;
}
}
class Program
{
public static void Main(string[] args)
{
//Skapar ett objekt av klassen Sodacrate som heter sodacrate
var sodacrate = new Sodacrate();
sodacrate.Run();
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
- Idag Snart hjälper Google TV dig hitta fjärrkontrollen 13
- Igår Cooler Master släpper flerfärgad kylpasta 54
- Igår Veckans fråga: Vilken extern datalagring föredrar du? 50
- Igår Microsoft Recall under lupp hos integritetsmyndighet 36
- Igår Testpilot: Komplett-PC Epic Gaming a230 Esport Edition – tryggt för spel 6
- Igår Se vilka spel som funkar på Windows på ARM 27
- 21 / 5 Grafikprestanda i Senua's Saga: Hellblade II – ett av de tyngsta PC-spelen någonsin 125
- 19 / 5 Ghost of Tsushima kan använda DLSS och FSR 3 samtidigt 11
- 17 / 5 27 år senare – Winamp får öppen källkod 45
- 17 / 5 Grafikprestanda i Ghost of Tsushima – en välpolerad PC-version 28
- Värmland förbereder internet vid krisläge17
- Den eviga frågan, uppdatera eller köpa ny?13
- Quiz: Vad kan du om sällsynta produkter?31
- Dagens fynd (bara tips, ingen diskussion) — Läs första inlägget först!18533
- Facebook ska använda dina inlägg för att träna AI35
- Ryde - Vilken scooter-modell?4
- Ny hårddisk för spel och övrig lagring 2024, vad ska man ha?2
- Kingston eller Corsair? (Asus rog g731gw-ev042t)2
- Tråden om Xbox Series X|S7590
- Bildskärmar och glasögon4
- Säljes gammal server
- Säljes Phanteks Enthoo EVOLV ATX Silver, Corsair h100i v2
- Säljes Dell U4924DW - 49 tum, ultrawide
- Säljes Realtek 8822CE m.2 wifi-kort
- Säljes Google Pixel 7 Pro
- Säljes Mekaniska diskar
- Säljes Nvidia Asus ROG Strix RTX 4090
- Säljes Gamingdator i7 7700k, 16GB, 1080Ti 11GB, 500GB, WIFI
- Säljes Möss och Musmattor!
- Säljes Asus ROG Strix 1070 Ti 8GB
Tester av chassi, grafikkort, processorer m.m.
- Snabbtest: 3DMark Steel Nomad – visuellt avancerat, förvånansvärt lättdrivet44
- Grafikprestanda i Senua's Saga: Hellblade II – ett av de tyngsta PC-spelen någonsin125
- Grafikprestanda i Ghost of Tsushima – en välpolerad PC-version28
- SweClockers Noob-byggarguide Del 213
- Köpråd: 8 bästa komponenterna just nu67
- SweClockers Noob-byggarguide Del 117
- Prispressat mejselkit är Testlabbets favorit51
- Corsair Platform 6: För dig som inte nöjer dig med Ikea-skrivbord11
- Airtec Pro Type1 – batteridrivet alternativ till tryckluft på burk129
- Snabbtest: Bli mer Pro med mindre tangentbord43