problem przypisaniem ułamka zwykłego do zmiennych

0

Witam, mam problem z przypisaniem ułamka zwykłego do zmiennych a,b,c wpisywanych z klawiatury, gdy wpisuje np. 5/3 to otrzymuje błąd :

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextDouble(Scanner.java:2413)
at Main.main(Main.java:21)

import java.io.IOException;
import java.util.Scanner;

/**
 Program, który oblicza pierwiastki funkicj kwadratowej
 ax2+bx+c = 0 z wykorzystaniem instrukcji warunkowej
 if, gdzie zmienne a, b i c to liczby rzeczywiste wprowadzane
 z klawiatury. Dla zmiennych a, b, c, x, x1 oraz x2 należy przyjąć
 format wyświetlania ich na ekranie z dokładnością do dwóch
 miejsc po przecinku.
 */

public class Main {
    public static void main (String args [])throws IOException {

        double a, b, c, x, x1, x2, delta;

        System.out.println("Wprowadz wspolczynnki funkcji kwadratowej w postaci ogolnej ax^2 + bx + c ");
        Scanner wczytajWartosci = new Scanner(System.in);
        System.out.print("Wspolczynnik a = ");
        a = wczytajWartosci.nextDouble();
        System.out.print("Wspolczynnik b = ");
        b = wczytajWartosci.nextDouble();
        System.out.print("Wspolczynnik c = ");
        c = wczytajWartosci.nextDouble();

        delta = (b * b) - 4 * (a) * (c);
        x = (-b) / (2 * (a));
        x1 = ((- b) - Math.sqrt(delta)) / (2 * (a));
        x2 = ((- b) + Math.sqrt(delta)) / (2 * (a));

        if (a == 0) {

            System.out.println("Wspolczynnik a musi byc rozny od zera!");

        } else {

            if (delta > 0) {

                System.out.print("Funkcja ma dwa miejsca zerowe ");
                System.out.printf("x1 ="+" %.2f", x1);
                System.out.printf("  x2 ="+" %.2f", x2);

            } else if (delta == 0) {

                System.out.printf("Funkcja ma jedno miejsce zerowe x = " + " %.2f", x);

            } else if (delta < 0) {

                System.out.println("Funkcja nie ma miejsc zerowych.");

            }
        }
    }
}


1

No tak - 5/3 to są dwie liczby oraz /, a nie jedna, zatem w żaden sposób nextDouble tego sam nie ogarnie.
Musiałbyś sam napisać funkcję, która potrafiłaby to przetworzyć.

Btw, nie porównuj liczb zmiennoprzecinkowych poprzez == oraz nie wrzucaj niepotrzebnych nawiasów delta = (b * b) - 4 * a * c; jest wystarczająco czytelne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1