3 回答

TA貢獻1821條經驗 獲得超5個贊
我不知道您要做什么,所以我無法提供解決方案,但是如果您查看您的代碼,您會看到,在您提供的情況下,min = -2^31 并且您的 temp 變量等于 1。這兩個數字的 Math.Min 顯然選擇了較小的數字 -> -2^31。與最大值相同。
如果您嘗試獲得數組中最大和最小的 nimber,請嘗試將 min 和 max 的第一個分配更改為
int min = int.MaxValue();
int max = int.MinValue();
我猜這將導致您想要的解決方案。

TA貢獻1848條經驗 獲得超10個贊
首先,
Foreach 循環將僅迭代一次,因為您的數組包含單個元素
temp 的值計算為 1。
int temp = x + ((x - mean) < 0 ? K : -K);
因為 is 的值K
并0
根據您的輸入將 x ie 1 添加到它。
如果您想獲得基于 0 的最小值和最大值,那么它將提供與您在輸入中收到的結果相同的結果
了解變量中存儲的值的最佳方法是使用Console.WriteLine()
. 這將為您在控制臺上打印結果。就像是
foreach(int x in A) {
int temp = x + ((x - mean) < 0 ? K : -K);
Console.WriteLine($"x: "+{x}+"\t mean: "+{mean}+"\t K: "+{K});
Console.WriteLine($"mini: "+{mini}+"\t maxi: "+{maxi});
Console.WriteLine($"{temp}");
mini = Math.Min(mini, temp);
maxi = Math.Max(maxi, temp);
Console.WriteLine($"{mini} and {maxi}");
}
或調試您的代碼

TA貢獻1895條經驗 獲得超7個贊
在foreach方法之前將int.MinValue設置為mini并將int.MaxValue設置為maxi,然后調用 Min 和 Max 方法來獲取最小值和最大值。您應該考慮到在第一次迭代中,mini 的值為 -2147483648,因此您可以像這樣調用 Min 方法:
mini = Math.Min(-2147483648, 1);
此方法適合您。如果要將最小值設置為1,那么您有多種選擇。其中之一是將 mini 和 maxi 類型更改為可為空的整數(int?)。
int? mini;
int? maxi;
然后在foreach中檢查它的值,如下所示:
foreach (int x in A)
{
int temp = x + ((x - mean) < 0 ? K : -K);
Console.WriteLine($"{temp}");
if(mini.HasValue)
mini = Math.Min(mini.Value, temp);
else
mini = temp;
if(maxi.HasValue)
maxi = Math.Max(maxi.Value, temp);
else
maxi = temp;
Console.WriteLine($"{mini} and {maxi}");
}
- 3 回答
- 0 關注
- 169 瀏覽
添加回答
舉報