metody i pola statyczne

0

Witam, dopiero zaczynam znajomosc z Java, stad moje moze i glupie pytanie. Ale wole wiedziec czy robie cos zle, czy jest ok.
mam takie zadanie:
"1. Napisać program, z podziałem na metody, do rozwiązywania równania kwadratowego ax2+bx+c=0, gdzie dane będą zaczytywane z klawiatury (jak nie znajdziecie ja to zrobić, pokażę na laboratorium). Pamiętajcie, że wszystkie metody muszą być statyczne i wszelkie pola również. Podział na 3 metody: do wczytywania danych, do liczenia wyników, to pokazywania."

moje rozwiazanie:

import javax.swing.*;   

public class wielomian {

	private static double a;
	private static double b;
	private static double c;
	private static double delta;
	private static double p_delta;
	private static double p1;
	private static double p2;
	private static double p0;
	
	
	public static void main(String[] args)
	{
	wprowadz();
	policz();
	pokaz();
		
	}

	public static void wprowadz()
	{
		
		String dane_a = JOptionPane.showInputDialog("Podaj wspolczynnik a: ");
		a = Double.parseDouble(dane_a);
		
		String dane_b = JOptionPane.showInputDialog("Podaj wspolczynnik b: ");
		b = Double.parseDouble(dane_b);
		
		String dane_c = JOptionPane.showInputDialog("Podaj wspolczynnik c: ");
		c = Double.parseDouble(dane_c);
	}
	
	
	private static void policz()
	{
		delta =  b*b - (4*a*c);
		System.out.println("Delta wynosi: " + delta);
		
		p_delta = Math.sqrt(delta);
		
		if(delta>0)
		{
	    p1 = (-b - p_delta)/(2*a);
		p2 = (-b + p_delta)/(2*a);
		}	
		if(delta == 0)
		{
		p0 = (-b)/(2*a);
		}
	}	
	
	
	public static void pokaz()
	{
		if(delta>0)
		{
	    System.out.println("x1 = " + p1 + ", x2 = " + p2);
		}
		else if(delta == 0)
		{
			System.out.println("x0 = " + p0);
		}
		else
		{
			System.out.println("Delta < 0. Brak pierwiastkow!");
		}
			
	}
			
}

Czy poprawnie wykonalem to zadanie? Jesli nie, to prosze o sugestie co trzeba poprawic/zmienic..

0

Jeśli chodzi o podział na funkcje (statyczne) to moim zdaniem dobrze.
Dosyć niekonsekwentnie dobrałeś modyfikatory, dlaczego jedna metoda jest private, a dwie są public ?
U mnie metoda wprowadz() nie działa, żadne okna dialogowe się nie pojawiają. Pomysł aby pytać użytkownika o trzy parametry w trzech różnych oknach kolejnych jest chyba nieszczęśliwy.
Wyniki wyświetlasz na konsoli, pytać o współczynniki też chyba powinieneś na konsoli, np. tak

        System.out.print("Podaj a: ");
        byte k=0,i=0;
        byte[] tekst=new byte[100];
        do
        {
            try
            {
       	        i=(byte)System.in.read();
      	        if (i==13)
      	        {
                    break;
                }
                tekst[k++]=i;
            }
            catch (IOException e)
            {
            }
        }
        while(true);
        a=Double.parseDouble(new String(tekst));

Dodałem bym też obsługę błędów, co będzie jak użytkownik napisze "Jasiu" zamiast "12.34" ?
pozdrawiam

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