Эта строка:
b = Math.sqrt(r^2 - x^2);
... Не делает то, что вы думаете, несколькими способами. Начать с ^ означает XOR, это не оператор степени - и он возвращает двойное, где, как b является целым числом.
Имея дело с проблемой питания, мы можем вместо этого использовать Math.pow (который фактически дает вам силу), чтобы получить:
b = Math.sqrt(Math.pow(r, 2), Math.pow(x, 2));
Конечно, я предполагаю, что здесь вы имели в виду силу и не хотели вместо этого XOR вместо двух чисел!
Вы можете просто привести результат к int:
b = (int)Math.sqrt(Math.pow(r, 2), Math.pow(x, 2));
Но вы, вероятно, хотите изменить b, чтобы оно было двойным, и вы можете сохранить дополнительную точность.