zhurongfei 发表于 2011-4-10 20:53:13

如何求一维数组里的最小值,帮助文件里说的求不出来【已解决】

本帖最后由 zhurongfei 于 2011-4-12 08:54 编辑

有个数组里面有30多个数字,含有10以下一位数字时,求的最小值错误,观察了一下电脑的排序大致为1.11.12.13.14.15.16.17.18.19.2.21.22.23.24.25.26.27.28.29.3
所以得出错误的数,如果把10以下的数字前面加零,得出的结果正确,这个事为什么呀!

netegg 发表于 2011-4-10 20:55:18

本帖最后由 netegg 于 2011-4-10 20:56 编辑

第一个元素是返回数组的元素个数,没错的

zhurongfei 发表于 2011-4-10 20:56:12

_arraymin这个是不可以的,是错值

netegg 发表于 2011-4-10 20:57:39

回复 3# zhurongfei

出来什么结果?

zhurongfei 发表于 2011-4-10 21:07:11

#include <Array.au3>
$i=0
Dim $avArray
$Chdir="D:\DOWNLOAD\2011\"   
$search = FileFindFirstFile($Chdir&"*.*")
If $search = -1 Then
       ; MsgBox(0, "Error", "No files/directories matched the search pattern")
      Exit
EndIf
While 1
      $file = FileFindNextFile($search)
If @error Then ExitLoop
    $avArray[$i]=$file
    ;MsgBox(0, "Error", $avArray[$i])
   $i=$i+1
WEnd
FileClose($search)
MsgBox(4096, "index:", _ArrayMin( $avArray, 1,1))
上面是代码,出来有时是空值,有时正确

蜘蛛抱蛋 发表于 2011-4-10 21:23:56

本帖最后由 蜘蛛抱蛋 于 2011-4-10 21:27 编辑

看一下UDF,排序主要用了两个函数,判断为数字的话就用==,判断为字符串就用StringCompare,你这个貌似是当做字符串取最小值了
另外还有一种可能是你的数字根本不是数字类型,你用stringtobinary函数看看

3mile 发表于 2011-4-10 22:02:31

很明显,错将字符串当成数值了.

afan 发表于 2011-4-10 23:04:52

昨天才回复了类似的问题
http://www.autoitx.com/thread-23585-1-1.html

love5173 发表于 2011-4-10 23:08:30

看见别人跌倒,希望自己不会在同一个地方跌倒 嘿嘿

netegg 发表于 2011-4-11 01:36:42

把文件名的后缀全删了再试试

kadingxiaodi 发表于 2011-4-11 07:10:36

电脑将字符串当数值啦,学习一下

zhurongfei 发表于 2011-4-11 12:44:41

现在能看出$file = FileFindNextFile($search),得出的文件名,都是字符串,有没有什么好方法将$file转化为数值,用number还是没有转化过来。

3mile 发表于 2011-4-11 13:19:38

回复 12# zhurongfei
Execute

zhurongfei 发表于 2011-4-11 23:16:47

回复 13# 3mile

还是没有什么好的方法改变电脑的排序,1,10,11,12,13,14,15,16,17,18,19,2,20,21,22,23,24,******29,3,30.。。。,那位有很好的解决方法吗,number,EXECUTE,什么转化统统都不能改变它的排列顺序!有没有谁解决这个问题的经验啊!

3mile 发表于 2011-4-11 23:48:47

回复 14# zhurongfei
$avArray[$i]=Execute($file)
页: [1] 2
查看完整版本: 如何求一维数组里的最小值,帮助文件里说的求不出来【已解决】