我正在用Scala 3编写一个Caesar密码,我正在编写一个表达式/函数,它迭代字符串的每个字符。在每次迭代时,每个字符都被转换成ascii值,移位,然后再转换回字符。函数打印,但输出以“()”结束...
import scala.io.StdIn.readLine
var message: String = "";
var shift: Int = 1;
def encrypt(messageToDecrypt: String, shiftAmt: Int): Unit =
var msgLen = messageToDecrypt.length
var dcrytArray = messageToDecrypt.toCharArray
var i : Int = 0
var shiftedCharArray = for i <- dcrytArray do print(((i.toInt + shiftAmt - 97) % 26 + 97).toChar)
@main def CeasarCipher(args: String*): Unit =
println("enter a phrase to encrypt: ")
var message = readLine()
var encryptedmessage = encrypt(message, shift)
println(encryptedmessage)
为什么输出以“()"终止?如何解决?
2条答案
按热度按时间wfypjpf41#
我明白了,你必须在for循环中使用“yield”而不是“do
oiopk7p52#
请不要使用变量、数组、可变结构和过程循环,它们伤害了我的眼睛:(如果你打算花时间学习scala,不妨学习以正确的方式使用它。