Держите решение на C, в Java перепишите сами:
$ cat horse.c
#include <stdio.h>
int main() {
char col, row;
scanf("%c", &col);
scanf("%c", &row);
for (int x = -2; x <= 2; x++)
for (int y = -2; y <= 2; y++)
if (x != y && x != -y && x && y &&
col + x >= 'a' && col + x <= 'h' &&
row + y >= '1' && row + y <= '8')
printf("%c%c ", col + x, row + y);
puts("");
return 0;
}
Сборка:
$ clang horse.c -o horse
Проверка:
$ echo e2 | ./horse
c1 c3 d4 f4 g1 g3
$ echo a1 | ./horse
b3 c2
$ echo a8 | ./horse
b6 c7
$ echo h1 | ./horse
f2 g3
$ echo h8 | ./horse
f7 g6
Основной цикл:
for (int x=-2; x<=2; x++)
for (int y=-2; y<=2; y++)
if (!(x==y || x*y==0)) MakeMove(x0, y0, x, y);
Метод MakeMove напиши уж сам - он грустный и неинтересный.
Решение "как бы сам":
Переберите все 64 клетки доски.
Пусть (xk, yk) - координаты коня, (x, y) - координаты клетки.
dx = Math.abs(x-xk)
dy = Math.abs(y-yk)
Нужное условие dx*dy==2 && dx+dy == 3
и printf("%c%c ", col + x, row + y); на Java