2014-01-26 20 views
0

我正在嘗試編寫一個腳本,該腳本將採用用戶輸入的整數,然後對所有數字進行求和。整數必須是1-99劃分整數以獲取所有數字並將它們相加

之間示例:

如果用戶輸入27

輸出:9

下面的代碼:

@ECHO OFF 
SET /p number="Enter a number: " 
SET sum=0 

IF %number% GTR 9 (
SET /a temp=%number% %% 10 
SET /a sum+=%temp% 
SET /a number/=10 
SET /a sum+=%number% 
) ELSE (
SET /a sum+=%number% 
) 

echo %sum% 

所以比方說,輸入的數字是19,它應該先做19%10才能得到「9」然後19/10得到1,兩者相加並得到10.但是當我實際運行這個代碼時,它返回19(在我輸入19的情況下)

+0

我已經告訴過你了,如何進行交叉總計,不是嗎? – Endoro

回答

1

如果數字被限制爲範圍1-99,所述計算值是直接

set /a "sum=%number%/10 + %number% %% 10" 

%number%/10將返回左邊的數字如果有的話,0,如果%number%小於10

%number% %% 10將返回在正確的數字

只是總結他們

+0

正是我在找的東西,謝謝! – Guy

0

在塊語句(a parenthesised series of statements)內,整個塊是解析並執行然後。塊中的任何%var%將在該塊被解析時被該變量的值取代 - 在塊被執行之前。

因此,分配給temp的值未按照您的預期評估。

您應該查找關於delayed expansion的許多SO文章,並瞭解batch substrings。這會讓你的任務更輕鬆。

並且不要使用temp作爲用戶變量,但看起來是邏輯的。 temp是一個目錄指針,它告訴系統在哪裏存儲臨時文件。改變它並不是一個好主意。

0
@echo off &setlocal disableDelayedExpansion 
SET /p "var=Enter var (1-99) " 
set /a var=%var:~0,1%+%var:~1,1% 2>nul 
echo %var% 
相關問題