이 프로그램은 첫 번째 "if"문에서 계속 분해되어 계속 caragory B에 연결됩니다. 어떤 코드를 추가하거나 제거해야합니까?프로그램이 "if"문에서 떨어져서 범주 "B"를 강제 실행합니다.
using System;
class Program
{
enum Numbers { standard = 1, express = 2, same = 3 };
const int A = 1, B = 2;
const int Y = 3, N = 4;
static void Main()
{
double cost, LB;
int Number_of_items ;
int myNumbers;
char catagory = 'A';
char surcharge = 'Y';
Console.WriteLine("please enter the type of shiping you want");
Console.WriteLine("Enter 1:standard shipping.");
Console.WriteLine("Enter 2:express shipping.");
Console.WriteLine("Enter 3:same day shipping.");
myNumbers = int.Parse(Console.ReadLine());
switch ((Numbers)myNumbers)
{
case Numbers.standard:
Console.WriteLine("thankyou for chooseing standerd shipping");
Console.WriteLine("please choose a catagory");
Console.Write("Type A or B to make your selection");
catagory = char.Parse(Console.ReadLine());
{ if (catagory==A)
{
Console.Write("please enter the number of items");
Number_of_items = int.Parse(Console.ReadLine());
cost = 3 * Number_of_items;
Console.Write("is this shipment going to alaska or Hawaii? (Y or N)");
if (surcharge==Y)
{
cost = cost + 2.50;
Console.WriteLine("Total cost is {0}." , cost);
}
else
Console.WriteLine("total cost is {0}." , cost);
}
else
Console.Write("please enter the weight in pounds");
LB = double.Parse(Console.ReadLine());
cost = 1.45 * LB;
Console.WriteLine("is this shipment going to alaska or Hawaii? (Y or N)");
}
if (surcharge==Y)
{
cost = cost + 2.50;
Console.WriteLine("Total cost is {0}." , cost);
}
else
Console.WriteLine("total cost is {0}." , cost);
break;
case Numbers.express:
Console.WriteLine("thankyou for chooseing Express Shipping");
Console.WriteLine("please choose a catagory");
Console.Write("Type A or B to make your selection");
catagory = char.Parse(Console.ReadLine());
{ if (catagory==A)
Console.Write("please enter the number of items");
Number_of_items = int.Parse(Console.ReadLine());
cost = 4 * Number_of_items;
{
Console.Write("is this shipment going to alaska or Hawaii? (Y or N)");
if (surcharge==Y)
{
cost = cost + 5.00;
Console.WriteLine("Total cost is {0}." , cost);
}
else
Console.WriteLine("total cost is {0}." , cost);
}
if (surcharge==B)
Console.Write("please enter the weight in pounds");
LB = double.Parse(Console.ReadLine());
cost = 2.50 * LB;
Console.WriteLine("is this shipment going to alaska or Hawaii? (Y or N)");
}
if (surcharge==Y)
{
cost = cost + 5.00;
Console.WriteLine("Total cost is {0}." , cost);
}
else
Console.WriteLine("total cost is {0}." , cost);
break;
case Numbers.same:
Console.WriteLine("thankyou for chooseing Same Day Shipping");
Console.WriteLine("please choose a catagory");
Console.Write("Type A or B to make your selection");
catagory = char.Parse(Console.ReadLine());
if (catagory == A)
Console.Write("please enter the number of items");
Number_of_items = int.Parse(Console.ReadLine());
cost = 5.50 * Number_of_items;
Console.Write("is this shipment going to alaska or Hawaii? (Y or N)");
if (surcharge==Y)
{
cost = cost + 8.00;
Console.WriteLine("Total cost is {0}." , cost);
}
else
Console.WriteLine("total cost is {0}." , cost);
if (surcharge==B)
Console.Write("please enter the weight in pounds");
LB = double.Parse(Console.ReadLine());
cost = 3.00 * LB;
Console.WriteLine("is this shipment going to alaska or Hawaii? (Y or N)");
if (surcharge==Y)
{
cost = cost + 8.00;
Console.WriteLine("Total cost is {0}." , cost);
}
else
Console.WriteLine("total cost is {0}." , cost);
break;
}
Console.ReadLine();
}//End Main()
}//End class Program
어떻게 실패할까요? – Clive
"A"를 입력하면 여전히 "B"가됩니다. – Jordan
매우 긴 방법입니다. 간단한 방법으로 분해하고 단위 테스트를 사용하여 각각의 작은 메서드가 제대로 작동하는지 확인하는 것이 좋습니다. –