Експериментиране със Small Shop - switch-case
От онзи ден ме е заглождило дали в switch-case може да се направи вложена проверка и сега реших да го разпиша, за да видя какво ще излезе. Кейсовете съм ги написал за градовете и за всеки кейс първото "ако" се чупи:
Защо не му харесва price само в първия if, когато горе съм декларирал променлива price, а за останалите не казва нищо?
P.S. Ясно ми е, че Console.WriteLine трябва да влезе в къдравите скоби, но ми е интересно защо, когато е извън тях, само първият прайс се чупи, а останалите - не.
Напротив, показва:
Ами това означава, че не си написал код за output. Вероятно нямаш Console.WriteLine или пък не си го сложил там, където трябва да бъде.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _02._Small_Shop
{
class Program
{
static void Main(string[] args)
{
var article = Console.ReadLine().ToLower();
var city = Console.ReadLine().ToLower();
var number = double.Parse(Console.ReadLine());
if (city == "sofia")
{
if(article == "coffe") Console.WriteLine("{0:F2}", number * 0.50);
else if(article == "water") Console.WriteLine("{0:F2}", number * 0.80);
else if(article == "beer") Console.WriteLine("{0:F2}", number * 1.20);
else if(article == "sweets") Console.WriteLine("{0:F2}", number * 1.45);
else if(article == "peanuts") Console.WriteLine("{0:F2}", number * 1.60);
}
else if(city == "plovdiv")
{
if (article == "coffe") Console.WriteLine("{0:F2}", number * 0.40);
else if (article == "water") Console.WriteLine("{0:F2}", number * 0.70);
else if (article == "beer") Console.WriteLine("{0:F2}", number * 1.15);
else if (article == "sweets") Console.WriteLine("{0:F2}", number * 1.30);
else if (article == "peanuts") Console.WriteLine("{0:F2}", number * 1.50);
}
else if (city == "varna")
{
if (article == "coffe") Console.WriteLine("{0:F2}", number * 0.45);
else if (article == "water") Console.WriteLine("{0:F2}", number * 0.70);
else if (article == "beer") Console.WriteLine("{0:F2}", number * 1.10);
else if (article == "sweets") Console.WriteLine("{0:F2}", number * 1.35);
else if (article == "peanuts") Console.WriteLine("{0:F2}", number * 1.55);
}
}
}
}
Имаш правописна грешка: "coffe" трябва да бъде "coffee". Вероятно заради това ти дава 80%. Освен това преди всяка Console.WriteLine и след нея трябва да има къдрави скоби:
else if (..........) {Console.WriteLine("............")}
Kalo7o На теб проблема ти идва от там,че използваш [0:F2], тоест закръгляш до втория знак след десетичната точка. Пример coffee -> Varna -> 2 = 0.90, а трябва да е 0.9 output. Махаш [0:F2] и кода ти работи. а и поправи coffe -> coffee