它告诉我它无法将int转换为bool。 试过TryParse,但由于某种原因,参数列表无效。
代码:
private void SetNumber(string n)
{
// if user input is a number then
if (int.Parse(n))
{
// if user input is negative
if (h < 0)
{
// assign absolute version of user input
number = Math.Abs(n);
}
else
{
// else assign user input
number = n;
}
}
else
{
number = 0; // if user input is not an int then set number to 0
}
}
答案 0 :(得分:13)
您可能使用TryParse
非常接近,但我猜您忘记了参数上的out
关键字:
int value;
if (int.TryParse(n, out value))
{
}
答案 1 :(得分:6)
请使用:
int i;
bool success = int.TryParse(n, out i);
如果解析成功,success
为true
。
如果案例i
包含该号码。
之前您可能错误地发现了out
参数修饰符。它具有out
修饰符,表示它是在被调用的方法中初始化的值。
答案 2 :(得分:3)
private void SetNumber(string n)
{
int nVal = 0;
if (int.TryParse(n, out nVal))
{
if (nVal < 0)
number = Math.Abs(nVal);
else
number = nVal;
}
else
number = 0;
}
答案 3 :(得分:3)
您可以尝试使用一些简单的正则表达式:
bool IsNumber(string text)
{
Regex regex = new Regex(@"^[-+]?[0-9]*\.?[0-9]+$");
return regex.IsMatch(text);
}
答案 4 :(得分:1)
您可以使用int.TryParse
..
private void SetNumber(string n)
{
int parsed = -1;
if (int.TryParse(n, out parsed)) //if user input is a number then
...
有人抱怨无法将int
转换为bool
的原因是因为int.Parse()
的返回类型是int
而不是bool
并且在c#条件中需要评估bool
值。
答案 5 :(得分:1)
int.Parse将返回一个整数而不是布尔值。
您可以按照建议使用int.TryParse。
int parsedValue;
if(int.TryParse(n, out parsedValue))
{
}
答案 6 :(得分:1)
此代码存在很多问题:
但试试这个:
private void SetNumber(string n)
{
int myInt;
if (int.TryParse(n, out myInt)) //if user input is a number then
{
if (myInt < 0) //if user input is negative
number = Math.Abs(n); //assign absolute version of user input
else //else assign user input
number = n;
}
else number = 0; //if user input is not an int then set number to 0
}
答案 7 :(得分:0)
int.Parse会将字符串转换为整数。目前你在if语句中有它,所以它将int.Parse的返回值视为bool,而不是。
这样的事情会起作用:
private void SetNumber(string n)
{
int num = 0;
try{
num = int.Parse(n);
number = Math.Abs(num);
}catch(Exception e){
number = 0;
}
}
答案 8 :(得分:0)
一方面,如果(h <0),内部if语句有'h'而不是'n'。但TryParse应该在那里工作,假设'number'是一个类变量。
private void SetNumber(string n)
{
int temp;
bool success = Int32.TryParse(n, out temp);
// If conversion successful
if (success)
{
// If user input is negative
if (temp < 0)
number = Math.Abs(temp); // Assign absolute version of user input
else // Assign user input
number = temp;
}
else
{
number = 0;
}
}
答案 9 :(得分:0)
//vinojash@gmail.com
//In my knowledge i did this in simple way thanks for watch my code
static void Main(string[] args)
{
string a, b;
int f1, f2, x, y;
Console.WriteLine("Enter two inputs");
a = Convert.ToString(Console.ReadLine());
b = Console.ReadLine();
f1 = find(a);
f2 = find(b);
if (f1 == 0 && f2 == 0)
{
x = Convert.ToInt32(a);
y = Convert.ToInt32(b);
Console.WriteLine("Two inputs r number \n so tha additon of these text box is= " + (x + y).ToString());
}
else
Console.WriteLine("One or tho inputs r string \n so tha concadination of these text box is = " + (a + b));
Console.ReadKey();
}
static int find(string s)
{
string s1 = "";
int f;
for (int i = 0; i < s.Length; i++)
for (int j = 0; j <= 9; j++)
{
string c = j.ToString();
if (c[0] == s[i])
{
s1 += c[0];
}
}
if (s==s1)
f= 0;
else
f= 1;
return f;
}