は、拡張子(スウィフト3)を使用して、よりSwiftyの方法です:
public extension Int {
/// returns number of digits in Int number
public var digitCount: Int {
get {
return numberOfDigits(in: self)
}
}
/// returns number of useful digits in Int number
public var usefulDigitCount: Int {
get {
var count = 0
for digitOrder in 0..<self.digitCount {
/// get each order digit from self
let digit = self % (Int(pow(10, digitOrder + 1) as NSDecimalNumber))
/Int(pow(10, digitOrder) as NSDecimalNumber)
if isUseful(digit) { count += 1 }
}
return count
}
}
// private recursive method for counting digits
private func numberOfDigits(in number: Int) -> Int {
if abs(number) < 10 {
return 1
} else {
return 1 + numberOfDigits(in: number/10)
}
}
// returns true if digit is useful in respect to self
private func isUseful(_ digit: Int) -> Bool {
return (digit != 0) && (self % digit == 0)
}
}
使用法:
print(333444.digitCount)
print(333444.usefulDigitCount)
あなたの質問に代わりの画像を投稿したコードを入れてください。 – vacawama
どうすればいいですか? –
質問を編集します。コードを切り取り、あなたの質問に貼り付けてください。コードの上と下に空白行があることを確認します。コードは各行の前に最小4桁のスペースが必要です。右側の境界線にある場合は、すべてのコードを強調表示し、エディタの '{}'アイコンを押します。 – vacawama