C# 使用什么来代替null static int min(int[]arr,int a) { int min=arr[0]; for(int i=1;i

C# 使用什么来代替null static int min(int[]arr,int a) { int min=arr[0]; for(int i=1;i,c#,C#,} 所以这段代码读取2到10个数字,然后写出其中第二个最小的数字。您可以用0键取消输入数字。如果无法写出第二个最小的数字(例如,所有输入的数字都是5),则不会写出任何数字) 但是我发现我们不能使用空值,那么我可以用什么来代替它呢?谢谢 将min2变量初始化为0,然后在需要搜索最小值且不使用可为空的整数时对其进行测试 static int min(int[] arr, int a) { int min = arr[0]; for (int i = 1; i

} 所以这段代码读取2到10个数字,然后写出其中第二个最小的数字。您可以用0键取消输入数字。如果无法写出第二个最小的数字(例如,所有输入的数字都是5),则不会写出任何数字)


但是我发现我们不能使用空值,那么我可以用什么来代替它呢?谢谢

将min2变量初始化为0,然后在需要搜索最小值且不使用可为空的整数时对其进行测试

static int min(int[] arr, int a)
    {
        int min = arr[0];
        for (int i = 1; i < a; i++)
            if (arr[i] < min)
                min = arr[i];
        return min;
    }

    static void Main(string[] args)
    {
        int[] arr = new int[10];
        int i;
        Console.WriteLine("Vnesi števila: ");
        for (i = 0; i < 10; i++)
        {
            int stevilo = int.Parse(Console.ReadLine());
            if (stevilo == 0)
                break;
            arr[i] = stevilo;
        }

        if (i < 2)
        {
            Console.WriteLine("Napaka - premalo števil!");
            Console.ReadKey();
            return;
        }

        int min1 = min(arr, i);

        int? min2 = null;
        for (int j = 0; j < i; j++)
        {
            int stevilo = arr[j];
            if(stevilo != min1 && (min2 == null || stevilo < min2))
                min2 = stevilo;
        }

        if(min2 == null)
            Console.WriteLine("Napaka - vsa števila enaka!");
        else
            Console.WriteLine("Drugo najmanjše: " + min2.ToString());

        Console.ReadKey();
    }
}

如果用户键入的内容无法转换为整数,则使用Int32.TryParse可以避免出现异常。好吧,这是一个奇怪的约束,但一旦有了它,就只需使用
bool
标志,或者
min2
必须与
min1
不同

int stevilo;
string userInput = Console.ReadLine();
if(!Int32.TryParse(userInput, out stevilo) || stevilo == 0)
    break;
arr[i] = stevilo;
/。。。
int min1=最小值(arr,i);
int min2=min1;
对于(int j=0;j
为什么不能使用
null
?是什么阻止了这一点?学校不允许它?你想用null实现什么?很好地阅读了代码,我有点忘记了,因为我在一个月前写的,我只知道它是有效的:(不能使用这些元素是的,数组的元素会自动初始化为零,因此当您需要停止、更新时,这也可以用作指示牌。)
int stevilo;
string userInput = Console.ReadLine();
if(!Int32.TryParse(userInput, out stevilo) || stevilo == 0)
    break;
arr[i] = stevilo;
// ...

int min1 = min(arr, i);

int min2 = min1;
for (int j = 0; j < i; j++)
{
    int stevilo = arr[j];
    if(stevilo != min1 && (min2 == min1 || stevilo < min2))
        min2 = stevilo;
}

if(min2 != min1)
    Console.WriteLine("Napaka - vsa števila enaka!");
else
    Console.WriteLine("Drugo najmanjše: " + min2.ToString());