2016-07-09 5 views
-1

私は、各ステップで13桁を取る1000桁の数字を横断する小さなコードを書いています。例えば、最初の反復では0から13までの桁を、次の繰り返しでは1から14までの桁を取らなければなりません。ここで私のコードですが、私のスライスは、私が大きな数を横断するにつれて小さくなります。私は毎回元の文字列から13桁をスライスしたい。何が間違っているのですか?スカラ:slice()が期待通りに機能しない

val largeNumber = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450" 
var current13Digits = "" 

for (iterator <- 0 to (largeNumber.length-13)) 
    { 
      println("CURRENT VALUE OF ITERATOR IS " + iterator) 
      current13Digits = largeNumber.slice(iterator,13) 
      println("CURRENT 13 DIGITS ARE " + current13Digits) 
    } 

出力は次のとおりです。各スライスの後に数字がドロップされます。何が間違っているのですか?

CURRENT VALUE OF ITERATOR IS 0 
CURRENT 13 DIGITS ARE 7316717653133 
CURRENT VALUE OF ITERATOR IS 1 
CURRENT 13 DIGITS ARE 316717653133 
CURRENT VALUE OF ITERATOR IS 2 
CURRENT 13 DIGITS ARE 16717653133 
CURRENT VALUE OF ITERATOR IS 3 
CURRENT 13 DIGITS ARE 6717653133 
CURRENT VALUE OF ITERATOR IS 4 
CURRENT 13 DIGITS ARE 717653133 
CURRENT VALUE OF ITERATOR IS 5 
CURRENT 13 DIGITS ARE 17653133 
CURRENT VALUE OF ITERATOR IS 6 
CURRENT 13 DIGITS ARE 7653133 
CURRENT VALUE OF ITERATOR IS 7 
CURRENT 13 DIGITS ARE 653133 
CURRENT VALUE OF ITERATOR IS 8 
CURRENT 13 DIGITS ARE 53133 
CURRENT VALUE OF ITERATOR IS 9 
CURRENT 13 DIGITS ARE 3133 
CURRENT VALUE OF ITERATOR IS 10 
CURRENT 13 DIGITS ARE 133 
CURRENT VALUE OF ITERATOR IS 11 
CURRENT 13 DIGITS ARE 33 
CURRENT VALUE OF ITERATOR IS 12 
CURRENT 13 DIGITS ARE 3 
CURRENT VALUE OF ITERATOR IS 13 
CURRENT 13 DIGITS ARE 
CURRENT VALUE OF ITERATOR IS 14 
CURRENT 13 DIGITS ARE 
CURRENT VALUE OF ITERATOR IS 15 
CURRENT 13 DIGITS ARE ..... 
+3

あなたはスライス引数を誤解しています。 2番目はスライス長ではなく、絶対終了インデックスです。 Scaladocを見てください。 – cchantep

+4

あなたが '.sliding(13)' –

答えて

-2

ありがとう、スライドは完全に動作します。

val current13Digits = largeNumber.sliding(13) 
while(current13Digits.hasNext) 
    { 
    current13DigitsAsString = current13Digits.next() 
    println("CURRENT 13 DIGITS ARE " + current13DigitsAsString 
    ... 
    } 
+1

'largeNumber.sliding(13).foreach(s => println(" CURRENT 13 DIGITS ARE "+ s) – dhg

関連する問題