Помогите конвертировать код из python в java
def main():
username = input("Please enter your name, and I'll convert it to a number: ")
usernumber = 0 # initialize
for character in username:
# convert to lower case...
# convert to ordinal form
# subtract so that a = 1
# add to total
if character != " ":
usernumber = usernumber + ord(character.lower()) - 96
print(usernumber)
if __name__ == "__main__":
main()
1 ответ 1
В java 8 это может выглядеть как-то так:
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
int userNumber = getUserName()
.chars()
.filter(c -> c != ' ')
.map(Character::toLowerCase)
.map(c -> c - 92)
.sum();
System.out.println(userNumber);
}
private static String getUserName() {
System.out.println("Please enter your name, and I'll convert it to a number: ");
Scanner scanner = new Scanner(System.in);
String userName = scanner.next();
scanner.close();
return userName;
}
}
Если более старая версия, то метод main можно заменить на такой:
public static void main(String[] args) {
int userNumber = 0;
for (char character : getUserName().toCharArray()) {
if (character != ' ') {
userNumber += Character.toLowerCase(character) - 92;
}
}
System.out.println(userNumber);
}
ответ дан 7 апр. 2018 в 8:13
faoxis
7,91019 золотых знаков82 серебряных знака145 бронзовых знаков
Начните задавать вопросы и получать на них ответы
Найдите ответ на свой вопрос, задав его.
Задать вопросdefault
sum(ord(c) - ord('a') + 1 for c in username.casefold() if not c.isspace())Для не-ascii букв, не ясно зачем'a'вычитать. Может вы просто хотите:hash(username.casefold())