2012-05-29 4 views
2

У меня есть два элемента в моем списке массивов в моей программе. Как назначить переменную равным одному из элементов?Как вернуть элемент массива в пакетном режиме?

Вот код:

@echo off 
setlocal enabledelayedexpansion 
set /p string= 
for /l %%a in (0,1,1000) do if not "!String:~%%a,1!"=="" set /a length=%%a+1 
set i=0 
:input 
set str=%string:~0,1% 
if "%str%"=="M" set array[i]=1000 
if "%str%"=="D" set array[i]=500 
if "%str%"=="C" set array[i]=100 
if "%str%"=="L" set array[i]=50 
if "%str%"=="X" set array[i]=10 
if "%str%"=="I" set array[i]=1 
set string=%string:~1% 
set /a i=i+1 
if %i%==%length% goto logic 
goto input 
:logic 

Я действительно, хотя там был стандартный способ сделать это.

+0

код, пожалуйста, я не знаю, как настроен ваш массив или что-то еще. –

+0

На каком языке вы используете? Показать код! – Sirko

ответ

1

Основная проблема заключается в том, что ваш код не создает batch-array.
Ваш код создать только одну переменную с именем array[i], но я полагаю, вы хотите создать массив:

array[0]=1000 
array[1]=500 

Тогда вам нужно что-то вроде

setlocal EnableDelayedExpansion 
set i=0 
:inputLoop 
set "str=%string:~0,1%" 
if "%str%"=="M" set array[%i%]=1000 
if "%str%"=="D" set array[%i%]=500 
if "%str%"=="C" set array[%i%]=100 
if "%str%"=="L" set array[%i%]=50 
if "%str%"=="X" set array[%i%]=10 
if "%str%"=="I" set array[%i%]=1 
set "string=%string:~1%" 
set /a i+=1 
if NOT %i%==%length% goto :inputLoop 

:logic 
rem ** logic begins 
for /L %%n in (1 1 %i%) do (
    echo !array[%%n]! 
    set /a value=array[%%n] 
) 

И в логической части вы можете см., как получить доступ к элементу массива.

КПП. Ваша функция strlen немного медленная, она может быть быстрее при двоичном поиске.
How to count the characters in a string with Batch?

Смежные вопросы