我刚刚开始学习C#作为我的第一门编程语言,所以我决定制作一个简单的问答C#控制台应用程序。控制台会问你一个问题,如果你答对了,它会说"正确"。过了一会儿,我让一切都正常工作,没有错误,除了它从来没有说"正确"
using System;
namespace Project
{
class MainClass
{
public static void Main (string[] args)
{
byte answer = 0;
Console.WriteLine ("What is 27+4?");
Console.ReadLine ();
if (answer == 31)
{
bool answerCorrect = true;
if (answerCorrect == true)
Console.WriteLine ("Correct!");
}
}
}
}
感谢您的帮助!
因为Console.ReadLine()
读取您的输入(作为字符串),但它没有分配给您的变量answer
。若要使程序正常工作,请将行更改为:
answer = byte.Parse(Console.ReadLine());
但是记得改进你的代码,比如用int
代替byte
,if (answer == 31)
块中的代码可以更短,等等。
您必须存储来自 ReadLine 的字符串返回值并对其进行解析。这样:
byte answer = 0;
Console.WriteLine("What is 27+4?");
string s = Console.ReadLine();
if (byte.TryParse(s, out answer) && answer == 31)
{
bool answerCorrect = true;
if (answerCorrect == true)
Console.WriteLine("Correct!");
}
试试这个。
using System;
namespace Project
{
class MainClass
{
public static void Main (string[] args)
{
byte answer = 0;
Console.WriteLine ("What is 27+4?");
answer = byte.Parse(Console.ReadLine ());
if (answer == 31)
{
bool answerCorrect = true;
if (answerCorrect == true)
Console.WriteLine ("Correct!");
}
}
}
}
Console.Readline() 返回用户输入的字符串值,因此首先捕获该输入。
string input = Console.ReadLine ();
接下来,使用 String.Equals 方法检查输入是否正确
进行比较 if(input.Equals("31"))
最后,没有必要为answerCorrect
变量创建和赋值,因为如果代码进入if
语句,答案是正确的,所以只需Console.WriteLine ("Correct!")
里面。
首先我会使用 int
而不是 byte
。然后,您必须将用户输入分配给变量answer
。类型 int
提供了一个名为 .Parse(string s)
的方法,该方法尝试将你从 Console.ReadLine()
获得的字符串转换为 int。当然,如果输入类似于 "hello"
.这是一件好事,以后可以改进。
你对bool answerCorrect
的使用可能是正确的,但请记住:比较总是"返回"一个布尔值,所以你真的不需要额外的布尔值。
最后,您在main
方法的最后缺少Console.Read();
的重要行。这有点作弊,但您的程序会等待用户输入,控制台窗口保持打开状态,您实际上可以看到其中的内容。
static void Main(string[] args)
{
int answer = 0;
Console.WriteLine("What is 27 + 4?");
answer = int.Parse(Console.ReadLine());
if (answer == 31)
{
Console.WriteLine("Correct!");
}
else //I added this part for beauty reasons
{
Console.WriteLine("Incorrect!");
}
Console.Read();
}
我建议您查看运行程序while
,只要用户给出错误的答案,并且try..catch
接受"hello"
作为输入,但以不同的方式处理它,以进一步改进。
虽然对于您的第一个 C# 应用程序来说,干得不错。