Track four boolean flags for a password: does it contain an uppercase letter, a lowercase letter, a digit, and a symbol (non-alphanumeric)?
You start with:
val password = "Secret!99"
Build:
Length: 9 Upper: True Lower: True Digit: True Symbol: True Strong
Rules:
- Print
"Length: "followed by the number of characters. - Start four flags (
hasUpper,hasLower,hasDigit,hasSymbol) atfalse. Loop over every character and set the matching flag totrue. - A symbol is any character that is not a letter and not a digit.
- Print one line per flag, in this order:
"Upper: ","Lower: ","Digit: ","Symbol: ", each followed by the flag. Write it asTrueorFalsewith a capital letter, exactly as in the example (your language's own boolean prints differently, so choose the text yourself). - If the length is at least 8 and all four flags are
true(stricter than the last lesson), printStrong; otherwise printWeak.
Try other passwords: with secret99 the output is
Length: 8 Upper: False Lower: True Digit: True Symbol: False Weak
Use
c.isUpperCase(), c.isLowerCase(), c.isDigit() and c.isLetterOrDigit() inside for (c in password).
val password = "Secret!99"
val length = password.length
println("Length: $length")
var hasUpper = false
var hasLower = false
var hasDigit = false
var hasSymbol = false
for (c in password) {
if (c.isUpperCase()) {
hasUpper = true
}
if (c.isLowerCase()) {
hasLower = true
}
if (c.isDigit()) {
hasDigit = true
}
if (!c.isLetterOrDigit()) {
hasSymbol = true
}
}
println("Upper: " + (if (hasUpper) "True" else "False"))
println("Lower: " + (if (hasLower) "True" else "False"))
println("Digit: " + (if (hasDigit) "True" else "False"))
println("Symbol: " + (if (hasSymbol) "True" else "False"))
if (length >= 8 && hasUpper && hasLower && hasDigit && hasSymbol) {
println("Strong")
} else {
println("Weak")
}
Free plan: 30 tutor messages. Premium is unlimited.
Saved
Ctrl + Enter to check
