我的vb代码有什么问题?

时间:2013-11-16 02:09:39

标签: vb.net vba vb6

作为主题,这是我的代码。 任何人都可以帮我解决这些代码的错误,因为我在运行它时会显示错误。

Dim age As Integer
         age = CInt(lblResult.Text)
         Do While age ^ 2 - 1980 <> age
         age = age + 1
         lblResult.Text = "The solution is " & CStr(age) & " years old."
Loop

2 个答案:

答案 0 :(得分:2)

我的猜测是StackOverflowException因为无限循环,从这些行开始:

Do While age ^ 2 - 1980 <> age
     age = age + 1
     lblResult.Text = "The solution is " & CStr(age) & " years old."
Loop

由于你正在修改循环中age的右手比较值,而且违反循环的条件是age ^ 2 - 1980等于age,那么这个条件永远不会发生

不确定age ^ 2 - 1980 <> age的逻辑究竟应该是什么,但请执行以下操作之一:

  1. 介绍用于lcv的比较的循环计数器变量(即Do)。
  2. Do的条件更改为不等于(<>)的条件,大于或小于。同样,这很难推荐,因为我真的不知道这个循环的目的是什么。
  3. 最后,您无需使用CStr()Integer转换为String,只需使用ToString()变量的Integer,这样:

    lblResult.Text = "The solution is " & age.ToString() & " years old."
    

    OR

    使用String.Format(),如下所示:

    lblResult.Text = String.Format("The solution is {0} years old.", age)
    

答案 1 :(得分:0)

错误可能来自

age = CInt(lblResult.Text)

用Val()替换CInt(),它可能运行得更好

age = Val(lblResult.Text)

与其他人一样,我也对你的循环逻辑感到困惑:

你只在以下时间停止循环:年龄^ 2 - 1980 =年龄

一些简单的数学解决了年龄= 45岁(或年龄= -44岁)

为什么不简单地循环直到年龄= 45岁?

在你的情况下,它确实有效,因为你的循环方程有一个整数解,但如果答案是年龄= 45.3怎么办?在这种情况下,你的循环将是无穷无尽的