一維陣列賦值時候,如何確保所有的賦值不相同,如何設定檢查條件? 謝謝!
uj5u.com熱心網友回復:
要想“不相同”,除了一個一個的檢查“是否與‘之前的某元素值’出現重復”之外,哪還會有別的辦法!“陣列”本身是不支持任何“設定條件”的,要想有什么條件,那你就得自己寫代碼實作。

(感覺樓主似乎根本不懂編程的概念啊)
uj5u.com熱心網友回復:
謝謝你的回復,我編程基礎確實不強,不過我想問的是用代碼如何實作,我知道陣列是不能檢查的,我就是不會寫檢查輸入的代碼?謝謝!
uj5u.com熱心網友回復:
問題是,你的“陣列元素”是什么型別的東西?是數值、還是文本? 或者是“物件”?
如果是“數值”,值域范圍是“很寬”還是“很窄”?
對不同的東西,處理方法是不一樣的;
尤其在“要講求代碼質量和運行效率”的情況下,更是要區別對待。
檢查“是否重復”,如果要想“代碼簡單點”,可以用 Dictionary物件。
但這個物件不適合資料量太大的情況,資料太多速度下降很明顯。
好幾年前我測驗過:
大概在3萬條左右,慢到跟“自己在‘有序陣列’中找”的速度差不多了,
5萬以上時,已經明顯比“自己找”還慢了。
當然,如果對“速度”要求不是很苛刻,或者資料量不多,用 Dictionary物件是不錯的選擇。
uj5u.com熱心網友回復:
一個投機的方式:new一個collection ,然后把元素往里面add,同時把元素值也當做key值填入(如果是純數值,前面加個字串前綴啥的)。當有重復資料的時候,add會因為key重復而失敗。
uj5u.com熱心網友回復:
隨機必然有重復,所謂“不重復的隨機”實際上是洗牌。洗牌演算法參考下面(盡管是C不是VB):#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int d[6];
int i,n,a,b,t;
int c,j;
void main() {
srand(time(NULL));
printf("shuffle 0..n-1 demo\n");
for (n=1;n<=5;n++) {/* 測驗1~5個元素 */
printf("_____n=%d_____\n",n);
j=1;
for (c=1;c<=n;c++) j=j*c;/* j為n! */
j*=n*2;
for (c=1;c<=j;c++) {/* 測驗n*2*n!次 */
for (i=0;i<n;i++) d[i]=i;/* 填寫0~n-1 */
for (i=n;i>0;i--) {/* 打亂0~n-1 */
a=i-1;b=rand()%i;
if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
}
printf("%04d:",c);
for (i=0;i<n;i++) printf("%d",d[i]);
printf("\n");
}
}
printf("shuffle 1..n demo\n");
for (n=1;n<=5;n++) {/* 測驗1~5個元素 */
printf("_____n=%d_____\n",n);
j=1;
for (c=1;c<=n;c++) j=j*c;/* j為n! */
j*=n*2;
for (c=1;c<=j;c++) {/* 測驗n*2*n!次 */
for (i=1;i<=n;i++) d[i]=i;/* 填寫1~n */
for (i=n;i>1;i--) {/* 打亂1~n */
a=i;b=rand()%i+1;
if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
}
printf("%04d:",c);
for (i=1;i<=n;i++) printf("%d",d[i]);
printf("\n");
}
}
}
uj5u.com熱心網友回復:
采用 ListBox 存放這個陣列。如果不希望用戶看到,可以設定成不可見。Private Declare Function SendMessagebyString Lib "user32" Alias "SendMessageA" (ByVal hWND As Long, _
ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Const LB_FINDSTRINGEXACT = &H1A2 '在 ListBox 中精確查找
Private Const CB_FINDSTRINGEXACT = &H158 '在 ComboBox 中精確查找
Private Const LB_FINDSTRING = &H18F '在 ListBox 中模糊查找
Private Const CB_FINDSTRING = &H14C '在 ComboBox 中模糊查找
Private Sub Command1_Click()
If -1 = SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1, Text1.Text)
List1.AddItem Text1.Text
End If
End Sub
讀取的時候,讀一個串列項 List1.List(x) 即可。
uj5u.com熱心網友回復:
聽說易語言里面有這種功能, 你去試試吧轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/46901.html
標籤:VB基礎類
