Как я могу решить эту программу - PullRequest
0 голосов
/ 24 апреля 2020

Реализация метода stati c, который принимает число типа int в качестве параметра, использует класс Math для вычисления целого квадрата root данного целого числа. Если целое число отрицательное, возьмите квадрат root его положительного значения, а затем верните отрицательное значение результата, чтобы предположить, что это мнимое число

. Я пытался и дошел до

Scanner in = new Scanner(System.in);
int j = 1, result = 1;

System.out.println("Enter a number : ");
int x = in.nextInt();

if (x == 0 || x == 1 ) 
{
  System.out.println("Square root = " + x);
  return;
}

while (result <= x) 
{
  j++;
  result = j * j;
}

System.out.println("Square root = " + (j - 1));

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

По умолчанию

Math.sqrt ()

уже обрабатывает квадрат root всех положительных чисел. Но при попытке с отрицательным числом вы получаете "NaN". Поэтому вам нужно самостоятельно вводить отрицательные числа

  public static double getRoot(int num) {
    boolean isNegative = false;
    // if negative turn to positive int
    if (num < 0) {
        num = Math.abs(num);
        isNegative = true;
    }

    double result = Math.sqrt(num);
    if(isNegative) {
        // Negate number
        result = 0 - result;
    }

    return result;
0 голосов
/ 24 апреля 2020

Это то, что вы ищете? Мы находим квадрат root числа и гарантируем, что введенное число положительно. Math.abs найдет абсолютное значение. Затем мы возвращаем результат как отрицательный, если вход был отрицательным, в противном случае возвращаем квадрат root.

    static int result(int input) {
        int result = (int) Math.sqrt(Math.abs(input));

        return input < 0 ? -result : result;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...