该代码只是大学将欧元兑换成美元的练习,但我无法弄清楚为什么它不会起作用。我在这里包含了代码。我添加了一个额外的Console.ReadLine();我自己以便找出答案是什么。这是因为如果我只有一个,程序就会启动,然后闪存完成。答案似乎总是54.88。 任何帮助将不胜感激。
编辑:我不小心把"输入美元"而不是"输入欧元。"这不应该影响代码,只是措辞。垃圾进去,垃圾出来就是我可能发生的事情。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace euro_to_dollar
{
class Program
{
static void Main(string[] args)
{
float dollars, conversion_rate, euros;
conversion_rate = 1.12f;
Console.WriteLine("Enter in Dollars:");
dollars = Console.Read();
euros = dollars * conversion_rate;
Console.WriteLine("Dollars:" + euros);
Console.ReadLine();
Console.ReadLine();
}
}
}
答案 0 :(得分:1)
Console.Read
只能从控制台读取一个字符。
相反,代码应使用dollars = float.Parse(Console.ReadLine());
所以完整的代码是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace euro_to_dollar
{
class Program
{
static void Main(string[] args)
{
float dollars, conversion_rate, euros;
conversion_rate = 1.12f;
Console.WriteLine("Enter in Dollars:");
dollars = float.Parse(Console.ReadLine());
euros = dollars * conversion_rate;
Console.WriteLine("Dollars:" + euros);
Console.ReadLine();
Console.ReadLine();
}
}
}
编辑:每次获得54.88的原因是因为每次测试一个数字时,它都以字符1
开头,用ASCII中的数字49
表示。因此,1.12 * 49 = 54.88
答案 1 :(得分:0)
另一种选择是简单地使用float.TryParse()
:
string dollars = Console.ReadLine();
float dollarsValue;
bool isConversionSuccessful = float.TryParse(dollars, out dollarsValue);
if (isConversionSuccessful) {
...
}
.TryParse()
将解析dollars
的值,如果成功则将其绑定到dollarsValue
。该方法还返回一个bool值,因此您可以将其用于一些额外的检查。
答案 2 :(得分:0)
不要忘记将初始string
输入(从Console.ReadLine()
)转换为货币类型表示(通常为decimal
)。不要混合仅读取字符的Console.Read()
和读取整个字符串的Console.ReadLine()
:
static class Program
{
static void Main(string[] args)
{
// conversion_rate is a constant (at least in this program)
const decimal conversion_rate = 1.12m;
// decimal is a preferable type for money
decimal dollars = 0.00m;
// ask until correct value is entered
do
{
Console.WriteLine("Enter in Dollars:");
} // Console.ReadLine() - we want entire string (e.g. "5.31") not just '5' char
while (!decimal.TryParse(Console.ReadLine(), out dollars));
// use formatting
Console.WriteLine("Dollars: {0} are equal to {1} euros",
dollars, dollars * conversion_rate);
// do you really want two pauses? (two Console.ReadLine())
Console.ReadLine();
}
}
答案 3 :(得分:-2)
与评论中的其他人一样,这是您必须使用的代码(关键是用户Console.ReadLine而不是Console.Read
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace euro_to_dollar
{
class Program
{
static void Main(string[] args)
{
float dollars, conversion_rate, euros;
conversion_rate = 1.12f;
Console.WriteLine("Enter in Dollars:");
dollars = float.Parse(Console.ReadLine());
euros = dollars * conversion_rate;
Console.WriteLine("Dollars:" + euros);
Console.ReadLine();
Console.ReadLine();
}
}
}