问题描述
我正在研究Rail Fence Cipher加密。
fun main(){
println("Enter the message:")
var message:String = readLine()!!.toupperCase()
println("Enter the key:")
var key:Int = readLine()!!.toInt()
var skip:Int = 2*(key-1)
var j=0
var encryptedMsg:String=""
var key1 = key
while(key1>0){
for(i in (key-key1)..message.length step skip){
if(i<=message.length-1)
encryptedMsg+=message[i]
}
key1-=1
skip = 2*(key1-1)
}
println("Encrypted Message: $encryptedMsg")
}
I am having trouble with the last row.
我在这里遇到错误:Step must be positive,was: 0
。我也知道步骤对最后一行不起作用。还有其他选择吗?
解决方法
fun main(){
println("Enter the message:")
var message:String = readLine()!!.toUpperCase()
println("Enter the key:")
var key:Int = readLine()!!.toInt()
var skip:Int = 2*(key-1)
var j=0
var encryptedMsg:String=""
var key1 = key
while(key1>0){
for(i in (key-key1)..message.length step skip){
if(i<=message.length-1)
encryptedMsg+=message[i]
}
key1-=1
skip = 2*(key1-1)
if(skip==0) skip=2*(key-1) //This solves the problem
}
println("Encrypted Message: $encryptedMsg")
}
不过,如果有人在没有两个循环的情况下有更好的建议,我想知道。谢谢。