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 Sony stoppar även Ghost of Tsushima i länder utan PSN 44
- Igår Microsofts spelbutik för mobiler lanseras i sommar 9
- 11 / 5 Windows skärmdumpverktyg får QR‑kodläsare 4
- 11 / 5 Microsoft jobbar på ny widget-funktion i Start‑menyn 27
- 10 / 5 "Långsiktighet" är orsaken till Microsofts nedskärningar 24
- Idag Snabbkoll: Har du Windows installerat på SSD eller HDD? 32
- Idag Forskare: AI-kloner av döda människor måste regleras 8
- Igår Hemmabygge slår samman 256 RISC‑V‑kretsar 22
- 11 / 5 Krönika: Tanken av att prata med AI i spel gör mig deprimerad 49
- 11 / 5 Stack Overflow-användare ilsknar till efter Open AI-affär 20
- Snabbkoll: Har du Windows installerat på SSD eller HDD?36
- Samlingstråd LG OLED 2023 (A3/B3/C3/G3/Z3)727
- Behöver hjälp med VPN11
- Diablo IV – den stora tråden3692
- Forskare: AI-kloner av döda människor måste regleras8
- Fanboy-quiz: Vad kan du om Sega?78
- Får ej mer än 15fps i fallout 4 (next gen)12
- Wordle på svenska - ordlig.se7915
- 6000 kr för skoldator reperation!24
- Uppgraderingsmöjligheter för spel i 14407
- Säljes Corsair 64GB (2x32GB) DDR5 6000MHz
- Säljes Intel i5 4670, 16gig ram, nvidia gtx780
- Säljes VKB Gladiator evo joysticks
- Säljes Xbox 360,Hörlurar, VR Headset
- Säljes Tobii eye tracker 5
- Köpes Söker 4070 4070ti 4080
- Säljes mITX Dator Arc750, 12400f, Lian-Li Q58 mm.
- Säljes PCIe 4.0 riser och intern USB2.0-hubb
- Säljes Asus Strix Z690-A Gaming Wifi D4 + 32GB Corsair
- Säljes Speldator
Tester av chassi, grafikkort, processorer m.m.
- SweClockers Noob-byggarguide Del 212
- Bästa komponenterna enligt SweClockers medlemmar55
- SweClockers Noob-byggarguide Del 117
- Prispressat mejselkit är Testlabbets favorit40
- Corsair Platform 6: För dig som inte nöjer dig med Ikea-skrivbord11
- Airtec Pro Type1 – batteridrivet alternativ till tryckluft på burk128
- Snabbtest: Bli mer Pro med mindre tangentbord43
- Snabbtest: Högre spelprestanda med Intel APO46
- Snabbtest: Asus ROG Swift PG32UCDM – kryss i nästan alla rutor38
- Cooler Master Ncore 100 Max – lättbyggt minstingchassi17