由于if
语句中的第一行,我无法运行此命令。我确信有些东西需要转换,但我不确定是什么。
using System;
using System.Collections.Generic;
using System.Text;
namespace xx
{
class Program
{
static void Main(string[] args)
{
string userInput;
Console.Write("what number do you choose: ");
userInput = Console.ReadLine();
if (userInput > 100)
Console.WriteLine("I hate myself");
else
Console.WriteLine("I love myself");
}
}
}
答案 0 :(得分:18)
userInput是一个字符串,您正在尝试将其与int(100)进行比较。用户输入需要先转换为int。
int i;
// TryParse() returns true/false depending on whether userInput is an int
if (int.TryParse(userInput, out i))
{
if (i > 100)
{
Console.WriteLine("I hate myself");
}
else
{
Console.WriteLine("I love myself");
}
}
else
{
Console.WriteLine("Input was not a valid number.");
}
答案 1 :(得分:3)
尝试if (Int32.Parse(userInput) > 100)
您正在尝试将Console.ReadLine()返回的字符串与整数进行比较 - 这就是编译器瘫痪的原因。
虽然是一种更强大的方法..现在我想到的就是使用Integer.TryParse
int parsedInt;
bool bResult = Int32.TryParse(stringToParse, out parsedInt)
仅当转换/解析操作成功时,bResult才会成立。这将处理恶意输入。如果成功,out参数包含您需要的整数值。