我有以下代碼:
int orderQuantity;
Write("Number of Items: \t");
while(int.TryParse(ReadLine(), out orderQuantity) && orderQuantity > 0 == false)
{
Write("Error: Number of Items must be a positive, whole number: \t");
int.TryParse(ReadLine(), out orderQuantity);
}
目標是雖然輸入不是正整數,但繼續回傳錯誤。一旦輸入是一個正整數,繼續。
問題是這個邏輯只適用于負數。當我嘗試將代碼變成while(!int.TryParse(ReadLine(), out orderQuantity) && orderQuantity > 0 == false)
我遇到了無法將整數或負數識別為錯誤的代碼。
uj5u.com熱心網友回復:
用:
while(!int.TryParse(ReadLine(), out orderQuantity) || orderQuantity <= 0)
{
Write("Error: Number of Items must be a positive, whole number: \t");
}
因此,您必須單獨處理它不是有效整數和有效但不大于零的情況。同時TryParse從回圈體中洗掉。
uj5u.com熱心網友回復:
int orderQuantity;
Write("Number of Items: \t");
int.TryParse(ReadLine(), out orderQuantity);
while(orderQuantity < 1)
{
Write("Error: Number of Items must be a positive, whole number: \t");
int.TryParse(ReadLine(), out orderQuantity);
}
uj5u.com熱心網友回復:
while((!int.TryParse(ReadLine(), out orderQuantity)) || (orderQuantity <= 0))
uj5u.com熱心網友回復:
你需要把條件括起來,這樣:
int.TryParse(ReadLine(), out orderQuantity) && orderQuantity > 0 == false
改為這樣:
(int.TryParse(ReadLine(), out orderQuantity) && orderQuantity > 0) == false
uj5u.com熱心網友回復:
擴展方法可能會幫助您獲得更具表現力且更易于閱讀的代碼:
public static class StringExtensions
{
public static bool IsPositiveInt32(this string input, out int value)
{
if(!int.TryParse(input, out value))
{
return false;
}
return value > 0;
}
}
用法將是
int orderQuantity;
Write("Number of Items: \t");
while(!ReadLine().IsPositiveInt32(out orderQuantity))
{
Write("Error: Number of Items must be a positive, whole number: \t");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331416.html
