using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _3
{
class Program
{
static void Main(string[] args)
{
double money;
double pay;
Console.Write("请输入消费金额:");
money = Convert.ToDouble(Console.ReadLine());
if (money < 1000)
pay = money;
else if (1000 < money && money <= 2000)
{
Console.WriteLine("是否有会员?(y/n)");
Convert.ToChar(Console.ReadLine());
if (Convert.ToChar(Console.ReadLine()) == 'y')
pay = 0.9 * 0.95 * money;
else if ((Convert.ToChar(Console.ReadLine()) == 'n'))
pay = 0.9 * money;
else
Console.WriteLine("输入有误,请重新输入");
}
else
{
Console.WriteLine("是否有会员?(y/n)");
Convert.ToChar(Console.ReadLine());
if (Convert.ToChar(Console.ReadLine()) == 'y')
pay = 0.85 * 0.85 * money;
else if ((Convert.ToChar(Console.ReadLine()) == 'n'))
pay = 0.85 * money;
else
Console.WriteLine("输入有误,请重新输入");
}
Console.WriteLine("消费金额为{0}实际需要支付{1}元", money,pay);
Console.ReadKey();
}
}
}
double pay;
改为
double pay=0.0;
给pay赋予初始0,否则编译的时候,系统认为pay可能未被赋值(都走else分支的情况下)
那肯定是输入判断有问题,既不是'y',也不是'n',才会pay没有赋值
Convert.ToChar是把数值型转换为字符。但ReadLine返回的是字符串
string a = Console.ReadLine();
if(a[0] == 'y')试试
因为你的
if()
else if()
else
{
}
中有分支中没有给pay赋值。ru:Console.WriteLine("输入有误,请重新输入");
而且你的代码有问题。
Console.WriteLine("是否有会员?(y/n)");
Convert.ToChar(Console.ReadLine());//1
Console.Read();//2
if (Convert.ToChar(Console.ReadLine()) == 'y') //3
pay = 0.9 * 0.95 * money;
else if ((Convert.ToChar(Console.ReadLine()) == 'n'))
这里你输入一个‘y'后就被第一个readLine获取了。你后面比较的时候会再一次等待输入。
```c
double money;
double pay = 0;
char vip;
Console.Write("请输入消费金额:");
money = Convert.ToDouble(Console.ReadLine());
if (money < 1000)
pay = money;
else if (1000 < money && money <= 2000)
{
Console.WriteLine("是否有会员?(y/n)");
vip = Convert.ToChar(Console.ReadLine());
if (vip == 'y')
pay = 0.9 * 0.95 * money;
else if (vip == 'n')
pay = 0.9 * money;
else
{
Console.WriteLine("输入有误,请重新输入");
return;
}
}
else
{
Console.WriteLine("是否有会员?(y/n)");
vip = Convert.ToChar(Console.ReadLine());
if (vip == 'y')
pay = 0.85 * 0.85 * money;
else if (vip == 'n')
pay = 0.85 * money;
else
{
Console.WriteLine("输入有误,请重新输入");
return;
}
}
Console.WriteLine("消费金额为{0}实际需要支付{1}元", money, pay);
```
Convert.ToChar()得到的结果是Char类型的,和'y'字符串类型无法比较