从控制台获取c#输入,但未返回正确的输出
C#程序试图从用户那里获取输入,并使用这两个数字来查找产品从控制台获取c#输入,但未返回正确的输出,c#,input,C#,Input,C#程序试图从用户那里获取输入,并使用这两个数字来查找产品 using System; namespace Program { class MainClass { static int computeProd1(int num1, int num2) { return (num1 * num2); } public static void Main (string[] args)
using System;
namespace Program
{
class MainClass
{
static int computeProd1(int num1, int num2)
{
return (num1 * num2);
}
public static void Main (string[] args)
{
int first, second;
Console.Write ("enter first number: ");
first = Convert.ToInt32 (Console.ReadLine ());
Console.Write ("enter 2nd number: ");
second = Convert.ToInt32 (Console.ReadLine ());
int product = computeProd1 (first, second);
//Console.WriteLine ("\n First number is: {0}" , first);
//Console.WriteLine ("\n Second number is: {0}" , second);
Console.WriteLine ("\nTheir product is: {0}" , product);
Console.ReadKey ();
}
}
}
第一个和第二个数字已经输出了一个数字,不管我放什么。也许可以试试这段代码 更新 通过使用int.tryParse()实现更多的防故障方法
console.Read返回输入的字符的ascii码,而不是int值 请尝试此代码,它将要求输入号码(仅限号码),然后返回产品:
class Program
{
static int computeProd1(int num1, int num2)
{
return (num1 * num2);
}
public static void Main(string[] args)
{
int? first = null, second = null;
int first_i = 0, second_i = 0;
while (!first.HasValue)
{
Console.WriteLine("enter first number");
if (int.TryParse(Console.ReadLine(), out first_i))
{
first = first_i;
}
}
while (!second.HasValue)
{
Console.WriteLine("enter second number");
if (int.TryParse(Console.ReadLine(), out second_i))
{
second = first_i;
}
}
int product = computeProd1(first_i, second_i);
Console.WriteLine("Their product is:\t" + product);
Console.Read();
}
}
默认情况下,基于当前值返回输入字符的值。例如,这里有一个链接,它可能解释了为什么0得到48,等等
如果只想使用单个数字,可以使用获取实际键值。对于多位数值,可以使用该方法。以下是两个方面的示例:
int first, second;
//for single digit inputs
var singleDigitInput1 = Convert.ToChar(Console.Read).ToString();
var singleDigitInput2 = Convert.ToChar(Console.Read).ToString();
//for multi digit inputs
var multiDigitInput1 = Console.ReadLine();
var multiDigitInput2 = Console.ReadLine()
if (int.TryParse(singleDigitInput1, out first) && int.TryParse(singleDigitInput2, out second))
{
int product = computeProd1(first, second);
Console.WriteLine("Their product is:\t" + product);
}
else
{
//input cannot be converted to int
}
那么问题是什么,您不想接受非数字输入吗?只想接受数字输入如果我输入0,它将打印48,任何大于0的数字都将添加48。TryParse()就是您想要的。问题是您使用的是Read()而不是ReadLine()它给了我一个异常错误输入字符串的格式不正确更新了我的答案,我建议使用s-s给出的示例。有很多方法可以通向罗马,有些方法比其他方法更好。好吧,可能不是ASCII,但想法是一样的。请参阅。@TomBlodget谢谢您指出,我将删除该引用
int first, second;
//for single digit inputs
var singleDigitInput1 = Convert.ToChar(Console.Read).ToString();
var singleDigitInput2 = Convert.ToChar(Console.Read).ToString();
//for multi digit inputs
var multiDigitInput1 = Console.ReadLine();
var multiDigitInput2 = Console.ReadLine()
if (int.TryParse(singleDigitInput1, out first) && int.TryParse(singleDigitInput2, out second))
{
int product = computeProd1(first, second);
Console.WriteLine("Their product is:\t" + product);
}
else
{
//input cannot be converted to int
}