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 Intel skyller Raptor Lake-krascher på moderkortstillverkare 2
- Idag TSMC utvecklar enorma kretsar med effekt mätt i kilowatt 9
- Idag Så mycket långsammare blir Intels värstingkretsar med ”Intel Baseline” i BIOS 35
- 26 / 4 Corsair Platform 6: För dig som inte nöjer dig med Ikea-skrivbord 11
- 26 / 4 Rykte: Switch 2 släpps i höst – OLED-variant dröjer 41
- Dagens fynd — Diskussionstråden49517
- Intel skyller Raptor Lake-krascher på moderkortstillverkare2
- Dell U2412 visar bara ränder6
- Så mycket långsammare blir Intels värstingkretsar med ”Intel Baseline” i BIOS35
- OBD2 scanner fungerar ej till V706
- Dagens fynd (bara tips, ingen diskussion) — Läs första inlägget först!18429
- Akira har tjänat en halv miljard kronor på ransomware-attacker20
- NVIDIA gillar linux / open source5
- Gamingskärm - ultrawide eller inte?36
- Piratebay problem?4
- Säljes Playstation 5 Digital 825gb
- Köpes Billig / gratis moderkort & cpu sökes till behövande pojk!
- Säljes ASUS ROG Ally 512GB + väska Ny oöpnad
- Säljes CaseLabs SMA8 (Gigantiskt sällsynt datorchassi)
- Säljes Sapphire Radeon RX 5600 XT Pulse
- Säljes 16GB 3600Mhz CL15 Trident Z DDR4
- Säljes Hårddiskar
- Säljes AMD Ryzen 9 7950X 4.5 GHz 81MB
- Köpes 17" laptop köpes.
- Köpes Sökes SFX powersupply, 400-750 watt
Tester av chassi, grafikkort, processorer m.m.
- Krönika: "Early access" är utstuderad girighet43
- Corsair Platform 6: För dig som inte nöjer dig med Ikea-skrivbord11
- Airtec Pro Type1 – batteridrivet alternativ till tryckluft på burk99
- Snabbtest: Bli mer Pro med mindre tangentbord41
- 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
- Gömda strömkontakter med Asus och Corsair37
- Grafikprestanda i Horizon Forbidden West108
- Snabbtest: Streacom VU1 – analoga mätare i en digital värld25
Externa nyheter
Spelnyheter från FZ
- Silent Hill 2 – Snart avslöjas släppdatum och till vilka plattformar det släpps idag
- River City Girls 2 gästas av Double Dragon i sommar idag
- Sand Land delar en sista hälsning från Akira Toriyama igår
- Alien: Rogue Incursion släpps till VR senare i år igår
- Kajsa Anka flyttar in i Disneys Dreamlight Valley igår