def multiplyStringNumericChars(list: String): Int = {
var product = 1;
println(s"The actual thing + $list")
list.foreach(x => { println(x.toInt);
product = product * x.toInt;
});
product;
};
Jest to funkcja, która pobiera ciąg znaków, taki jak 12345
i powinna zwrócić wynik 1 * 2 * 3 * 4 * 5
. Jednak wracam nie ma sensu. Jaka jest niejawna konwersja z Char
na Int
wracająca?Scala char do konwersji int
Wygląda na to, że dodajesz 48
do wszystkich wartości. Jeśli zamiast tego robię product = product * (x.toInt - 48)
, wyniki są poprawne.
Dla charakter, toInt powraca odpowiedni kod postaci. Użyj x.asDigit, aby uzyskać liczbę całkowitą odpowiadającą cyfrze (to działa aż do podstawy 36, jeśli umieścisz litery). –