Сделайте это следующим образом:
import java.util.Scanner;
public class MyTest {
public static void main(String[] args) {
String input = "";
Scanner scanner = new Scanner(System.in);
do {
System.out.print("Enter the number: ");
input = scanner.nextLine();
} while (!input.matches("\\d+"));// Allow only positive int
int num = Integer.parseInt(input);
System.out.println(logic(num));
}
public static int logic(int input) {
String[] digits = String.valueOf(input).split("");// Split on each digit
int sum = 0;
for (int i = 0; i < digits.length; i++) {
int j = (i + 2) % digits.length;
sum += Math.pow(Integer.parseInt(digits[i]), Integer.parseInt(digits[j]));
}
return sum;
}
}
Пробный прогон:
Enter the number: 123
12
[Обновление]:
Вы можете улучшить производительность функции, анализируя каждое di git в int
и сохраняя их в int[]
. Затем вы можете просто использовать цифры из этого int[]
вместо анализа цифр при вычислении мощности.
public static int logic(int input) {
String[] arr = String.valueOf(input).split("");// Split on each digit
int[] digits = new int[arr.length];
// Fill digits[] with corresponding elements of arr[] parsed into int
for (int i = 0; i < arr.length; i++) {
digits[i] = Integer.parseInt(arr[i]);
}
int sum = 0;
for (int i = 0; i < digits.length; i++) {
int j = (i + 2) % digits.length;// The alternate index
sum += Math.pow(digits[i], digits[j]);
}
return sum;
}
Вы можете придумать еще много способов сделать это, и я рекомендую вам попробуйте столько способов, сколько сможете.