在Visual Basic 2008中使用IF运算符

时间:2014-11-11 16:18:45

标签: visual-studio-2008

我可以使用IF-THEN-ELSE结构在Visual Basic 2008中编写以下问题。但我想知道如何使用Visual Basic 2008中的IF运算符对其进行编码。

编写一个请求3个数字作为输入的程序,并显示两个最高数字的总和。

由于

2 个答案:

答案 0 :(得分:0)

除了标准答案("选择一本不错的通用编程书"):如果你已经说出了任务 - 也就是说,没有任何限制或指导方针 - 你不要完全需要IF。可以使用LINQ在一行中完成:

Dim numbers As List(Of Integer)
    numbers = New List(Of Integer)

    numbers.Add(9)
    numbers.Add(-4)
    numbers.Add(1)

    Console.WriteLine(numbers.OrderByDescending(Function(n) n).Take(2).Sum())

您可以使用for循环(从1到3)读取数字。

以下编辑

如果您要专门使用IF语句,而不是ELSE语句(这是我理解您的问题/评论的方式),它基本上是一般的计算机科学,而不是编程问题;)但是无论如何(我会使用C语法,因为它对我来说更容易写,对不起):

你有3个数字,(x,y,z)。使用关系> =(大于或等于),它们可以以6(3!,3个阶乘)的方式排列:

x, y, z
x, z, y
y, x, z
y, z, x
z, x, y
z, y, x

现在,在大多数语言中,您不能使用如下语句:

if(x >= y >= z)

但您可以将其拆分为

if(x >= y && y >= z)

这为您提供了在每种可能情况下仅执行特定代码块的方法:

if(x >= y && y >= z){
    // biggest numbers: x, y
    return x + y;
}
if(x >= z && z >= y){
...and so on, 6 times total

请注意,这是一种天真的方法,并不是最好的解决方案。如果你赶时间,它会做的。如果你有空闲时间,你可以考虑更优化的解决方案 - 作为练习;)

答案 1 :(得分:0)

如果你真的必须使用If,你可以适应@David或@Gerino的想法:

    Dim inputs(2) As Integer

    For index = 0 To 2
        inputs(index) = Int32.Parse(Console.ReadLine)
    Next

    If True Then
        Console.Write(inputs.OrderByDescending(Function(f) f).Take(2).Sum())
    End If

    Console.ReadLine()

或者如果您想展示短路If语法的知识:

    Dim inputs(2) As Integer

    For index = 0 To 2
        inputs(index) = Int32.Parse(Console.ReadLine)
    Next

    Dim totalSum As Integer = inputs.OrderByDescending(Function(f) f).Take(2).Sum()
    Dim output As String = If(totalSum > 0, "Positive: " & totalSum, "Negative:" & totalSum)

    Console.Write(output)
    Console.ReadLine()