2017-01-05 29 views
0

私は現在、外国語を訓練するプログラムを作成しようとしています。 私は2つの一次元配列を持っています。最初の一つは、私はすべての外国音節や単語を格納し、私は私の母国語で回答を格納してい秒1で:多次元配列はPowerShellではどのように機能しますか?

$QuestionArray = New-Object System.Collections.ArrayList 
$QuestionArray = "Word1","Word2","Word3" 

$AnswerArray = New-Object System.Collections.ArrayList 
$AnswerArray = "Answer1","Answer2","Answer3" 

入力された値が答えアレイ内にある場合はその後、私は確認してください。それが私の場合は、質問配列からランダムに選択された単語のインデックスとインデックスを選択します。両方のインデックスが一致する場合、質問に答えられています。意図したものではなく、私は、今日同僚にそれを示したとき、彼はちょうどプログラムの比較部は醜いコード化され、何もなく、ベストプラクティスであることを私に言ったよう

$RandomQuestion = $QuestionArray | Get-Random 
$Answer = $InputTextbox.Text 
$IndexPositionQuestion = [array]::indexof($QuestionArray, $RandomQuestion) 
$IndexPositionAnswer = [array]::indexof($AnswerArray, $Answer) 

If($IndexPositionAnswer -eq $IndexPositionQuestion){ 
    $RightTextbox.Text = $script:countercorrect++ 
}else{ 
    $WrongTextbox.Text = $script:counterwrong++ 
} 

プログラムが動作します。

どのように私は他の方法でそれについて行くことができますか?私は多次元配列について少しは読んでいますが、私はそれの周りに私の頭を包むことはできません。多次元配列のメリットは?どのように私は表示、比較、チェックなどのためにそれから必要な値を選択することができますか?

答えて

2

多次元配列を調べる前に、ハッシュテーブルを持つ配列のようなものを試してみませんか?

$array = @(
@{ 
    Question = 'blah?' 
    Answer = 'blub' 
}, 
@{ 
    Question = 'james' 
    Answer = 'Dean' 
} 
) 

あなたは

$RandomQuestionNr = 0..($QuestionArray.count -1) | Get-Random 
$Answer = $InputTextbox.Text 

if($array[$RandomQuestionNr].answer -eq $Answer){ 
    $RightTextbox.Text = $script:countercorrect++ 
}else{ 
    $WrongTextbox.Text = $script:counterwrong++ 
} 
ような何かをしようとyoureの例では

for($i = 0; $i -lt $array.Count; $i++){ 
    $array[$i].Question 
    $array[$i].Answer 
    } 

によって値を参照することができます

関連する問題