2017-12-06 11 views
2

私はperlにはとても新しいので、これはC++と似ていないことを学んでいます。だから、ユーザーは任意の長さの番号を入力し、私は各桁を追加し、合計を印刷したいと思います。 perlから数字を入力した場合は、各桁を追加してください。

#!/usr/bin/perl -w 
use strict; 
use warnings; 

print "Enter a number :"; 

my $num = <STDIN>; 

my @array = $num; 
my $sum=0; 
for my $arr (@array){ 

    $sum += $arr; 

print $sum; 
} 

例えば、ユーザが1234年に入り、合計:10 は私が得る実際の結果は、あなたが別の数字に入力された文字列$numを分割する必要があり1234

+0

あなたは '使用の警告を使用している;'は、 'シェバング行に-w'は必要ありません。両方の目的は同じです。 – serenesat

答えて

3

あなたはわずか2行

use strict; 
use warnings; 

print "Enter a number :"; 

my $num = <STDIN>; 

#You missed out to remove the entermark at the end 
chomp($num); my $newnum = "0"; 

$newnum += $_ for split//, $num; 

print $newnum; 

を追加する必要があります。 私はオーバーライドするかしていないあなたは、私はちょうど私がperlのに知っていたが続いている何の方法を検討します。

Further More details

+0

かどうかチェックされています明らかに、私は理論的にこれを実際に説明する方法を知りません。私は実際にやっているうちにいくつかのアイデアを持っているだけで少しでもPerlの学習者です。 – ssr1012

+0

私はまったく新しいperlです。 'split //、$ num'と' split( ''、$ num) 'の違いはありますか? 私は2番目のものに慣れていましたが、どこにでも最初のものが表示されます –

+0

'for'を意味するときに' map'を使わないでください。 – Borodin

5

です。 my @array = $nummy @array = split //, $numに置き換えてください。 perldoc -f splitを実行して詳細を読む。

Perlでは、文字列と数字の両方がSCALARに分類されます。スカラは、算術演算(例えば、+など)が実行されると自動的に数値として扱われるので、forループ内の合計は期待どおりに機能します。

+0

それは最初にそれが[look_like_number](https://perldoc.perl.org/perlapi.html#looks_like_number) – zdim

関連する問題