我想从用户那里得到一个数字,然后将该数字乘以Pi。我对此的尝试如下。但是a
包含了胡言乱语。例如,如果我插入22
,则a
包含50
。我究竟做错了什么?我没有任何编译器错误。
double a,b;
a = Console.Read();
b = a * Math.PI;
Console.WriteLine(b);
答案 0 :(得分:60)
我不确定你的问题是什么(因为你没有告诉我们),但我猜是
a = Console.Read();
这只会从您的控制台中读取一个字符。
您可以将程序更改为此。为了使其更健壮,接受多于1个char输入,并验证输入实际上是一个数字:
double a, b;
Console.WriteLine("istenen sayıyı sonuna .00 koyarak yaz");
if (double.TryParse(Console.ReadLine(), out a)) {
b = a * Math.PI;
Console.WriteLine("Sonuç " + b);
} else {
//user gave an illegal input. Handle it here.
}
答案 1 :(得分:13)
a = double.Parse(Console.ReadLine());
请注意,如果用户输入无法解析为double的内容,则会抛出异常。
编辑:
为了扩展我的答案,它不适合你的原因是你以字符串格式从用户那里获得输入,并尝试将其直接放入双精度型。你不能这样做。您必须先从字符串中提取double值。
如果您想执行某种错误检查,只需执行以下操作:
if ( double.TryParse(Console.ReadLine(), out a) ) {
Console.Writeline("Sonuç "+ a * Math.PI;);
}
else {
Console.WriteLine("Invalid number entered. Please enter number in format: #.#");
}
感谢Öyvind和abatischev帮助我完善答案。
答案 2 :(得分:6)
string input = Console.ReadLine();
double d;
if (!Double.TryParse(input, out d))
Console.WriteLine("Wrong input");
double r = d * Math.Pi;
Console.WriteLine(r);
您面临的输入/输出不同的主要原因是Console.Read()
返回字符代码,而不是您输入的数字!了解如何使用MSDN。
答案 3 :(得分:2)
我认为有一些编译器错误。
在一行
处缺少分号 double a, b;
Console.WriteLine("istenen sayıyı sonuna .00 koyarak yaz");
a = double.Parse(Console.ReadLine());
b = a * Math.PI; // Missing colon!
Console.WriteLine("Sonuç " + b);
答案 4 :(得分:1)
string str = Console.ReadLine(); //Reads a character from console
double a = double.Parse(str); //Converts str into the type double
double b = a * Math.PI; // Multiplies by PI
Console.WriteLine("{0}", b); // Writes the number to console
Console.Read()
从一个时间的控制台A单个字符中读取一个字符串(但在继续之前等待输入。通常在while
周期中使用它)。因此,如果您编写25
+ Enter,它将返回2
的{{1}}的unicode值50
。如果您重做第二个Console.Read()
,它将立即返回53
(unicode值为5
)。第三个和第四个Console.Read()
将返回行/运输字符的结尾。五分之一将等待新的输入。
Console.ReadLine()
读取string
(因此您需要将字符串更改为double
)
答案 5 :(得分:1)
将来某个时候.NET4.6
//for Double
double inputValues = double.Parse(Console.ReadLine());
//for Int
int inputValues = int.Parse(Console.ReadLine());
答案 6 :(得分:0)
你错过了一个分号:double b = a * Math.PI;
答案 7 :(得分:0)
double a,b;
Console.WriteLine("istenen sayıyı sonuna .00 koyarak yaz");
try
{
a = Convert.ToDouble(Console.ReadLine());
b = a * Math.PI;
Console.WriteLine("Sonuç " + b);
}
catch (Exception)
{
Console.WriteLine("dönüştürme hatası");
throw;
}
答案 8 :(得分:0)
Console.Read()接受一个字符并返回该字符的ascii值。因此,如果要使用用户输入的符号而不是其ascii值(例如:if输入为5,然后符号= 5,ASCII值为53),则必须使用 int.parse()对其进行解析,但由于返回值 Console.Read( )已经是int类型。因此,您可以使用 Console.ReadLine()而不是Console.Read()来完成工作,如下所示。
int userInput = int.parse(Console.ReadLine());
此处, Console.ReadLine()的输出将是一个包含数字的字符串,例如“ 53”。将其传递给 int.Parse() >我们可以将其转换为int类型。