Java вводит десятичные дроби и работает с мнимыми числами

1

Я хочу сделать квадратную формульную программу. Я преуспел в основах, но имел две основные ошибки. Один, когда я пытаюсь ввести десятичные значения как a, b или, c, а другой, когда мне приходится иметь дело с я (мнимые числа). Как исправить эти проблемы? Я также ценю, как упростить код здесь, это мой код:

import java.util.Scanner;

public class Calculator {
    public static void main (String args[]){
    System.out.println("Input a");
    Scanner ai = new Scanner(System.in);
    double a = ai.nextInt();
    System.out.println("Input b");
    Scanner bi = new Scanner(System.in);
    double b = bi.nextInt();
    System.out.println("Input c");
    Scanner ci = new Scanner(System.in);
    double c = ci.nextInt();
    double Square1 = Math.pow(b, 2);
    double Square2 = -4*a*c;
    double Square3 = Square1 + Square2;
    double Square = Math.sqrt(Square3); 
    double Bottom = 2*a;
    double Top1 = -b + Square;
    double x1 = Top1/Bottom;
    double Top2 = -b - Square;
    double x2 = Top2/Bottom;
    System.out.printf("X = %s", x1);
    System.out.printf("X = %s", x2);

    }
}
Теги:

1 ответ

1
Лучший ответ

Первая ошибка, которую вы получили, потому что вы использовали метод nextInt(). Он бросает InputMismatchException при попытке чтения double - Method nextInt

Вместо nextInt() вы должны использовать метод nextDouble.

Вторая ошибка: Java не поддерживает мнимые числа :(

Если вы хотите использовать мнимые числа, вам нужно написать свой класс ImaginaryNumber.

Это ваш код, реорганизованный:

import java.util.Scanner;

public class Calculator {
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);

        System.out.println("Input a");
        double a = input.nextDouble();

        System.out.println("Input b");
        double b = input.nextDouble();

        System.out.println("Input c");
        double c = input.nextDouble();

        double square1 = Math.pow(b, 2);
        double square2 = -4 * a * c;
        double square3 = square1 + square2;

        if (square3 < 0) {
            double square = Math.sqrt(square3);

            double bottom = 2 * a;
            double top1 = -b + square;
            double x1 = top1 / bottom;
            double top2 = -b - square;
            double x2 = top2 / bottom;

            System.out.printf("X = %s", x1);
            System.out.println();
            System.out.printf("X = %s", x2);
        } else {
            System.out
                    .println("Can not calculate square root for negative number");
        }

        input.close();

    }
}

Вы можете заметить, что я добавил

if (square3 < 0) {

это потому, что метод Math.square может принимать только положительный результат. Если вы пройдете отрицательное число, оно вернет NaN - не число: Math.sqrt

  • 0
    OP хочет вычислить мнимые / сложные корни или это сообщение об ошибке?
  • 0
    Я действительно хотел вычислить комплексные числа.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню