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
}
}
あなたはおそらくTryParse
を使用して非常に近かったでしょうが、パラメータのout
キーワードを忘れたと思います。
int value;
if (int.TryParse(n, out value))
{
}
これを使用するだけです:
int i;
bool success = int.TryParse(n, out i);
解析が成功した場合、success
はtrue
です。
その場合、i
に番号が含まれます。
以前はout
引数修飾子が間違っていた可能性があります。呼び出されたメソッド内で初期化される値であることを示すout
修飾子があります。
簡単な正規表現で試すことができます:
bool IsNumber(string text)
{
Regex regex = new Regex(@"^[-+]?[0-9]*\.?[0-9]+$");
return regex.IsMatch(text);
}
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;
}
_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
値を評価する必要があるためです。
int.Parseは、ブール値ではなく整数を返します。
提案したように、int.TryParseを使用できます。
int parsedValue;
if(int.TryParse(n, out parsedValue))
{
}
このコードには多くの問題があります。
しかし、これを試してください:
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
}
一つには、内側のifステートメントに「n」の代わりに「h」が含まれているif(h <0)。ただし、「number」がクラス変数であると仮定すると、TryParseはそこで機能するはずです。
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;
}
}
//[email protected]
//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;
}
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;
}
}