我正尝试在控制台中创建一个简单的个位数计算器(实际上我只关心乘法)。
所以,这是我的代码,如果有人能帮我。
class multiplythisnumber
{
static void Main()
{
int input, input1, output; //variable decleration
System.Console.WriteLine("This application is meant to multiply two single digit numbers.");
System.Console.WriteLine("You can choose both numbers, however this is only a test.\r I am not sure the read command even does what I think it does.");
System.Console.WriteLine();
System.Console.Write("Please enter the first number: ");
input = System.Console.Read(); //Reads my input + 48(assuming 48 is the value of enter)
input = input - 48;
System.Console.WriteLine();
System.Console.Write("Please enter the second number: ");
input1 = System.Console.Read(); //Doesn't wasit for input and sets input1 = 13
System.Console.WriteLine();
output = input * input1;
System.Console.WriteLine();
System.Console.Write("{0} times {1} equals {2}.", input, input1, output);
System.Console.ReadKey();
}
}我添加了评论来解释我对其他人所做的事情,并只是作为个人笔记。
最后一行总是以"(0)乘以13等于0“结束。-Assuming我使用0作为输入1。
编辑:只是为了澄清一下,我知道0*13=0 (是的,它之前说的是12,它真正说的是13)。问题是它不允许我设置input1,而只是将它设置为13并继续执行。
Edit2:我想对Matt说声谢谢,因为他所做的更改使代码能够正确工作。所以,看起来我有了我的第一个代码,除了告诉你自己的名字之外,实际上还做了一些事情。
发布于 2011-09-29 10:44:43
Console.Read()只读取一个字符。因此,您的第一个Console.Read()读取您的编号,第二个读取CR代码(13),因为您的"Enter“。请改用ReadLine()。
System.Console.Write("Please enter the first number: ");
string first = System.Console.ReadLine();
input = Convert.ToInt32(first);
System.Console.WriteLine();
System.Console.Write("Please enter the second number: ");
string second = System.Console.ReadLine();
input1 = Convert.ToInt32(second);
System.Console.WriteLine();
output = input * input1;
System.Console.WriteLine();
System.Console.Write("{0} times {1} equals {2}.", input, input1, output);
System.Console.ReadKey();发布于 2011-09-29 10:45:06
它与Read()和ReadLine()的工作方式有关。请尝试使用ReadLine()。
发布于 2011-09-29 10:47:23
我相信这是因为您的程序使用的是Console.Read()而不是Console.ReadLine(),这意味着它一次只能从输入中读取一个字符。你的第一个输入是5+a返回。尝试使用ReadLine,您需要防止输入不是整数的内容。您可以使用以下程序来实现您想要的功能。
class Program
{
static void Main(string[] args)
{
int input, input1;
string output; //variable decleration
System.Console.WriteLine("This application is meant to multiply two single digit numbers.");
System.Console.WriteLine("You can choose both numbers, however this is only a test.\r I am not sure the read command even does what I think it does.");
System.Console.WriteLine();
System.Console.Write("Please enter the first number: ");
int.TryParse(System.Console.ReadLine(),out input); //Reads my input
System.Console.WriteLine();
System.Console.Write("Please enter the second number: ");
int.TryParse(System.Console.ReadLine(), out input1);
System.Console.WriteLine();
if (input != 0 && input1 != 0) {
input = input - 48;
output = (input * input1).ToString();
}else
{
output = "NaN";//not a number
}
System.Console.WriteLine();
System.Console.Write("{0} times {1} equals {2}.", input, input1, output);
System.Console.ReadKey();
}
}https://stackoverflow.com/questions/7591848
复制相似问题