以下是平方镜在vb.net中的程序,需要一个 listbox和command
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim xx As Long, j As String, i As String
xx = InputBox("请输入最大范围数", 100000)
For m = 10 To xx
i = m
j = StrReverse(i)
If i = j Then GoTo 10
End If
①.0:
Next
End Sub
End Class
多线程一般是不推荐用的,因为线程之间如果有共享资源的话会引起竞争,需要加锁处理;而且线程间没有时序关系,所以你在调试中可能会出现异步处理结束顺序与开始处理顺序不一致的情况(我在调试中已经发现该问题).
针对你提出的这个问题,采用了多线程处理,利用的是BackgroundWorker也就是异步处理控件进行了处理.
代码已经经过调试通过.欢迎交流,如有问题,留下QQ或其他联系方式.
代码如下,并附程序截图.
'---------------------------------------------------
Imports?System.ComponentModel?'导入异步控件命名空间
Public?Class?Form1
Private?howmany?As?Integer?=?10
Private?AnalysisNumber(0?To?howmany?-?1)?As?BackgroundWorker
Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click
ListBox1.Items.Clear()
creatNewBackgroundWorker()
addHandle()
startWork()
End?Sub
Private?Sub?creatNewBackgroundWorker()
For?i?As?Integer?=?0?To?AnalysisNumber.Length?-?1
AnalysisNumber(i)?=?New?BackgroundWorker
Private?Sub?addHandle()
AddHandler?AnalysisNumber(i).DoWork,?AddressOf?AnalysisNumber_DoWork
AddHandler?AnalysisNumber(i).RunWorkerCompleted,?AddressOf?AnalysisNumber_RunWorkerCompleted
Private?Sub?startWork()
For?j?As?Integer?=?1?To?10
temp(j?-?1)?=?10?*?i?◆?j
AnalysisNumber(i).RunWorkerAsync(temp)
Private?Sub?AnalysisNumber_DoWork(ByVal?sender?As?Object,?ByVal?e?As?System.ComponentModel.DoWorkEventArgs)
Dim?data?As?Integer()
data?=?CType(e.Argument,?Integer())
Dim?temp?As?Integer
For?i?As?Integer?=?0?To?data.Length?-?1
temp?=?data(i)
data(i)?=?temp?*?temp
e.Result?=?data
Private?Sub?AnalysisNumber_RunWorkerCompleted(ByVal?sender?As?Object,?ByVal?e?As?System.ComponentModel.RunWorkerCompletedEventArgs)
data?=?CType(e.Result,?Integer())
ListBox1.Items.Add(data(i))
End?Class
问题不是很简单吗?
判断输入的数,大于等于零,则直接开方;小于零则取绝对值开方再加上字符"i",代码我就不写了.
Public?Function?panduan(ByVal?n?As?Integer)?As?Boolean
Dim?res?As?Boolean?=?False
a?=?n?\?1000
b?=?(n?\?100)?Mod?10
c?=?(n?\?10)?Mod?10
d?=?n?Mod?10
temp1?=?Sqrt(n)
res?=?True
End?If
Return?res
End?Function
Dim?str?As?String?=?"",?temp?As?Integer?=?0,?sum?As?Integer?=?0,?x?As?Integer
If?panduan(i)?Then
temp?=?i
Exit?For
VB的运算顺序是:先乘除、后加减,有括号的先算括号内,有负号的先算负号.
请你比较一下这个运算中x和y的值:
Dim x As Single
Dim y As Single
x = n ◆ 1
x = x / n
x = x - 1
x = Math.Sqrt(x)
y = Math.Sqrt((n ◆ 1) / n - 1)
这样就会发现,你的代码中括号的位置错了.
正确的应该是: Math.Sqrt((n ◆ 1) / n - 1)
以上就是土嘎嘎小编为大家整理的vb.net开平方相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!