Commit 2a515066 by Patryk Czarnik

importy zwykłe

parent 7358486a
package p09_importowanie;
/* W tej wersji programu nie ma żadnych importów, a wszystkie odwołania do klas Geometria, JednostkiMiary
* oraz standardowej klasy Scanner są poprzedzone nazwą pakietu.
*
* W języku Java ZAWSZE da się napisać program bez użycia import.
*/
public class Program0 {
public static void main(String[] args) {
@SuppressWarnings("resource")
java.util.Scanner scanner = new java.util.Scanner(System.in);
petla:
while(true) {
System.out.println("\nWybierz figurę lub operację:");
System.out.println(" K - kwadrat");
System.out.println(" O - koło");
System.out.println(" P - prostokąt");
System.out.println(" T - trójkąt");
System.out.println(" KM - przelicz kilometry na mile");
System.out.println(" MK - przelicz mile na kilometry");
System.out.println(" CF - przelicz °C na °F");
System.out.println(" FC - przelicz °F na °C");
System.out.println(" Q - zakończ");
String wybor = scanner.next().toUpperCase();
switch(wybor) {
case "Q" -> {
break petla;
}
case "K" -> {
System.out.print("Podaj długość boku kwadratu: ");
double a = scanner.nextDouble();
double pole = p08_funkcje.przyklady.Geometria.poleKwadratu(a);
double obwod = p08_funkcje.przyklady.Geometria.obwodKwadratu(a);
System.out.printf("Dla kwadratu o boku %.3f pole wynosi %.3f, a obwód %.3f\n", a, pole, obwod);
}
case "O" -> {
System.out.print("Podaj promień koła: ");
double r = scanner.nextDouble();
double pole = p08_funkcje.przyklady.Geometria.poleKola(r);
double obwod = p08_funkcje.przyklady.Geometria.obwodKola(r);
System.out.printf("Dla koła o promieniu %.3f pole wynosi %.3f, a obwód %.3f\n", r, pole, obwod);
}
case "P" -> {
System.out.print("Podaj dwie długości boków prostokąta: ");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double pole = p08_funkcje.przyklady.Geometria.poleProstokata(a, b);
double obwod = p08_funkcje.przyklady.Geometria.obwodProstokata(a, b);
System.out.printf("Dla prostokąta o bokach %.3f i %.3f pole wynosi %.3f, a obwód %.3f\n", a, b, pole, obwod);
}
case "T" -> {
System.out.print("Podaj trzy długości boków trójkąta: ");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
double pole = p08_funkcje.przyklady.Geometria.poleTrojkata(a, b, c);
double obwod = p08_funkcje.przyklady.Geometria.obwodTrojkata(a, b, c);
System.out.printf("Dla prostokąta o bokach %.3f %.3f %.3f pole wynosi %.3f, a obwód %.3f\n", a, b, c, pole, obwod);
}
case "KM" -> {
System.out.print("Podaj odległość w kilometrach: ");
double km = scanner.nextDouble();
double wynik = p08_funkcje.przyklady.JednostkiMiary.km_na_mile(km);
System.out.printf("%.3f km = %.3f mil\n", km, wynik);
}
case "MK" -> {
System.out.print("Podaj odległość w milach: ");
double mile = scanner.nextDouble();
double wynik = p08_funkcje.przyklady.JednostkiMiary.mile_na_km(mile);
System.out.printf("%.3f mil = %.3f km\n", mile, wynik);
}
case "FC" -> {
System.out.print("Podaj temperaturę w Fahrenheitach: ");
double f = scanner.nextDouble();
double wynik = p08_funkcje.przyklady.JednostkiMiary.f_na_c(f);
System.out.printf("%.3f °F = %.3f °C\n", f, wynik);
}
case "CF" -> {
System.out.print("Podaj temperaturę w Celsjuszach: ");
double c = scanner.nextDouble();
double wynik = p08_funkcje.przyklady.JednostkiMiary.c_na_f(c);
System.out.printf("%.3f °C = %.3f °F\n", c, wynik);
}
default -> {
System.out.println("Nieznane polecenie " + wybor);
}
}
}
System.out.println("Dzięki, miłego dnia!");
}
}
package p09_importowanie;
import java.util.Scanner;
import p08_funkcje.przyklady.Geometria;
import p08_funkcje.przyklady.JednostkiMiary;
/* W tej wersji stosujemy najbardziej standardowy sposób importowania, najczęściej używany:
każda klasa, do której odwołuje się nasz program, jest zaimportowana osobnym poleceniem.
import w Javie NIE służy załadowaniu klas do pamięci, nie wykonuje się w czasie działania programu (tak się dzieje w Python i PHP)
To jest tylko wskazanie z jakiego pakietu pochodzi klasa.
import nie wpływa na wydajność!
*/
public class Program1 {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
petla:
while(true) {
System.out.println("\nWybierz figurę lub operację:");
System.out.println(" K - kwadrat");
System.out.println(" O - koło");
System.out.println(" P - prostokąt");
System.out.println(" T - trójkąt");
System.out.println(" KM - przelicz kilometry na mile");
System.out.println(" MK - przelicz mile na kilometry");
System.out.println(" CF - przelicz °C na °F");
System.out.println(" FC - przelicz °F na °C");
System.out.println(" Q - zakończ");
String wybor = scanner.next().toUpperCase();
switch(wybor) {
case "Q" -> {
break petla;
}
case "K" -> {
System.out.print("Podaj długość boku kwadratu: ");
double a = scanner.nextDouble();
double pole = Geometria.poleKwadratu(a);
double obwod = Geometria.obwodKwadratu(a);
System.out.printf("Dla kwadratu o boku %.3f pole wynosi %.3f, a obwód %.3f\n", a, pole, obwod);
}
case "O" -> {
System.out.print("Podaj promień koła: ");
double r = scanner.nextDouble();
double pole = Geometria.poleKola(r);
double obwod = Geometria.obwodKola(r);
System.out.printf("Dla koła o promieniu %.3f pole wynosi %.3f, a obwód %.3f\n", r, pole, obwod);
}
case "P" -> {
System.out.print("Podaj dwie długości boków prostokąta: ");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double pole = Geometria.poleProstokata(a, b);
double obwod = Geometria.obwodProstokata(a, b);
System.out.printf("Dla prostokąta o bokach %.3f i %.3f pole wynosi %.3f, a obwód %.3f\n", a, b, pole, obwod);
}
case "T" -> {
System.out.print("Podaj trzy długości boków trójkąta: ");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
double pole = Geometria.poleTrojkata(a, b, c);
double obwod = Geometria.obwodTrojkata(a, b, c);
System.out.printf("Dla prostokąta o bokach %.3f %.3f %.3f pole wynosi %.3f, a obwód %.3f\n", a, b, c, pole, obwod);
}
case "KM" -> {
System.out.print("Podaj odległość w kilometrach: ");
double km = scanner.nextDouble();
double wynik = JednostkiMiary.km_na_mile(km);
System.out.printf("%.3f km = %.3f mil\n", km, wynik);
}
case "MK" -> {
System.out.print("Podaj odległość w milach: ");
double mile = scanner.nextDouble();
double wynik = JednostkiMiary.mile_na_km(mile);
System.out.printf("%.3f mil = %.3f km\n", mile, wynik);
}
case "FC" -> {
System.out.print("Podaj temperaturę w Fahrenheitach: ");
double f = scanner.nextDouble();
double wynik = JednostkiMiary.f_na_c(f);
System.out.printf("%.3f °F = %.3f °C\n", f, wynik);
}
case "CF" -> {
System.out.print("Podaj temperaturę w Celsjuszach: ");
double c = scanner.nextDouble();
double wynik = JednostkiMiary.c_na_f(c);
System.out.printf("%.3f °C = %.3f °F\n", c, wynik);
}
default -> {
System.out.println("Nieznane polecenie " + wybor);
}
}
}
System.out.println("Dzięki, miłego dnia!");
}
}
package p09_importowanie;
import java.util.Scanner;
import p08_funkcje.przyklady.*;
/* Gdy na końcu polecenia import za nazwą pakietu umieścimy *,
* to importowane są wszystkie klasy z tego pakietu.
* To nie importuje podpakietów (podklatalogów).
* importy z * mają niższy priorytet niż importy bezpośrednie.
*
* Gdy w programie pojawia się jakaś nazwa, to kompilator szuka klasy w takiej kolejności:
* 1. rzeczy zaimportowane bezpośrednio (tak jak w Program1)
* 2. bieżący pakiet
* 3. klasy zaimportowane za pomocą * (w tym java.lang)
* (bo w pewnym sensie kompilator Javy na początku robi niejawnie import java.lang.*;
*
* Czy importowanie wszystkich klas z dużego pakietu sprawia problemy?
* To nie jest problem z punktu widzenia wydajności, bo import nie ładuje tych klas do pamięci.
* Natomiast zwiększa to ryzyko kolizji nazw.
* Znany przykład: java.awt.List (lista wyboru w starej technologii okienkowej) i java.util.List (kolekcja).
* Sam import nie jest problemem, problem dopiero, gdy użyjemy tej klasy (błąd kompilacji).
*/
public class Program2 {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
petla:
while(true) {
System.out.println("\nWybierz figurę lub operację:");
System.out.println(" K - kwadrat");
System.out.println(" O - koło");
System.out.println(" P - prostokąt");
System.out.println(" T - trójkąt");
System.out.println(" KM - przelicz kilometry na mile");
System.out.println(" MK - przelicz mile na kilometry");
System.out.println(" CF - przelicz °C na °F");
System.out.println(" FC - przelicz °F na °C");
System.out.println(" Q - zakończ");
String wybor = scanner.next().toUpperCase();
switch(wybor) {
case "Q" -> {
break petla;
}
case "K" -> {
System.out.print("Podaj długość boku kwadratu: ");
double a = scanner.nextDouble();
double pole = Geometria.poleKwadratu(a);
double obwod = Geometria.obwodKwadratu(a);
System.out.printf("Dla kwadratu o boku %.3f pole wynosi %.3f, a obwód %.3f\n", a, pole, obwod);
}
case "O" -> {
System.out.print("Podaj promień koła: ");
double r = scanner.nextDouble();
double pole = Geometria.poleKola(r);
double obwod = Geometria.obwodKola(r);
System.out.printf("Dla koła o promieniu %.3f pole wynosi %.3f, a obwód %.3f\n", r, pole, obwod);
}
case "P" -> {
System.out.print("Podaj dwie długości boków prostokąta: ");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double pole = Geometria.poleProstokata(a, b);
double obwod = Geometria.obwodProstokata(a, b);
System.out.printf("Dla prostokąta o bokach %.3f i %.3f pole wynosi %.3f, a obwód %.3f\n", a, b, pole, obwod);
}
case "T" -> {
System.out.print("Podaj trzy długości boków trójkąta: ");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
double pole = Geometria.poleTrojkata(a, b, c);
double obwod = Geometria.obwodTrojkata(a, b, c);
System.out.printf("Dla prostokąta o bokach %.3f %.3f %.3f pole wynosi %.3f, a obwód %.3f\n", a, b, c, pole, obwod);
}
case "KM" -> {
System.out.print("Podaj odległość w kilometrach: ");
double km = scanner.nextDouble();
double wynik = JednostkiMiary.km_na_mile(km);
System.out.printf("%.3f km = %.3f mil\n", km, wynik);
}
case "MK" -> {
System.out.print("Podaj odległość w milach: ");
double mile = scanner.nextDouble();
double wynik = JednostkiMiary.mile_na_km(mile);
System.out.printf("%.3f mil = %.3f km\n", mile, wynik);
}
case "FC" -> {
System.out.print("Podaj temperaturę w Fahrenheitach: ");
double f = scanner.nextDouble();
double wynik = JednostkiMiary.f_na_c(f);
System.out.printf("%.3f °F = %.3f °C\n", f, wynik);
}
case "CF" -> {
System.out.print("Podaj temperaturę w Celsjuszach: ");
double c = scanner.nextDouble();
double wynik = JednostkiMiary.c_na_f(c);
System.out.printf("%.3f °C = %.3f °F\n", c, wynik);
}
default -> {
System.out.println("Nieznane polecenie " + wybor);
}
}
}
System.out.println("Dzięki, miłego dnia!");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment