好的,所以这就是我所拥有的,控制台运行并接受第一个输入的任何数字并输出所有输出,但它会跳过第一个输出后的其余读数。我是C#的新手,想要学习,所以我肯定觉得我只是在这里错过了一些愚蠢的东西。不要担心目的,因为我现在只想要帮助解决这个问题。
谢谢你们,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Stamps
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, and welcome to the U.S. Mail Stamp Printer. Now, to print the correct stamp for your postage, please enter the number of half ounces (so 1= .5 ounce, 2 = 1 ounce) your package will weigh \n");
double i = Console.Read();
Console.WriteLine("Thank you, now, will you be sending to zone 1, 2, or 3? Simply enter the zone number and press enter\n");
double z = Console.Read();
Console.WriteLine("Great! Now, last question before I print your stamp, will you be using Local Mail or Air Mail, use the number 1 for local and the number 2 for air.\n");
double m = Console.Read();
if (m == 2)
{
double m2 = .95;
}
else
{
double m2 = .49;
}
if( i == 1)
{
double i2 = 1;
}
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
}
答案 0 :(得分:3)
Console.Read
method不解析输入,只读取输入流中的一个字符。
使用Console.ReadLine
method并解析您获得的字符串:
double i = Double.Parse(Console.ReadLine());
或:
int z = Int32.Parse(Console.ReadLine());
如果你想处理无效输入你将使用TryParse
方法,它们将返回一个布尔值,告诉你解析是否有效。
附注:当您尝试使用m2
和i2
变量时,您会注意到它不存在。该变量对于if
语句中的代码块是本地的,因此您需要在外部声明它以便以后能够使用它:
double m2;
if (m == 2)
{
m2 = .95;
}
else
{
m2 = .49;
}
答案 1 :(得分:1)
您可以刷新控制台缓冲区,也可以使用console.readline()。
有关更多信息,请参阅以下帖子,其中提供了您的问题答案。
http://stackoverflow.com/questions/7302544/flushing-system-console-read