0
バッチファイルに数値nとmの2つのソート済み配列を作成しました。バッチで配列のその他の問題が発生した場合
FOR /L %%a IN (0,1,!n!) DO ECHO !vector[%%a]!
FOR /L %%a IN (0,1,!m!) DO ECHO !vector2[%%a]!
これは私の配列の内容を正確に示しています。
今では、マージされたソートされた配列を出力するロジックを書きたいと思います。
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set i=0
set j=0
set /A totalElements =!n!+!m!
FOR /L %%A IN (1,1,!totalElements!) DO (
if !vector[!i!]! LSS !vector2[!j!]! (
echo "First list"
echo !%vector[!i!]%!
) else (
echo "Second List"
echo !%vector[!i!]%!
)
)
したがって、このif else
ロジックが機能していません。構文のどこで間違っていたのでしょうか?私は正しく配列から値を抽出していないと思いますか?
'echo!%vector [!i!]%!'とは、 'echo!vector [!i!]!'のようなものですか?とにかく、このような変数の展開を入れ子にすることはできません。あなたの最初の2行のコードでは、 '!vector [%% a]!'のように、 'for'変数をインデックスとして使用して、どのように動作するかを回避することができます。 (例えば、 '!i!、1、!i!]!' for/L %% a in! 'の中の '!i!'の代わりに 'for'変数を使用する必要があります。 )do(echo!vector [%% a]!) 'が働くと、ループは'!i! 'の値で1回のみ繰り返します)... – aschipfl
null値との比較を試みることはできますか?例えば、vectorは3 long、vector2 5です。ループは1から8になります(長さ3と5の配列では長くなります)。さらに、iとjの値を大きくしないでください。そうしないと、どの要素が比較されているのかわからないと、どこにエラーがあるのかがわかりません。より多くのコードや例がありますか(入力が可能、出力が正しくない、出力が期待されています)? – geisterfurz007
@aschipfl: 'for %% a in(!i!)do ...' - no/L'が必要です。 – Stephan