Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
java_examples
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Patryk Czarnik
java_examples
Commits
dc1ca34f
Commit
dc1ca34f
authored
Nov 14, 2022
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Przykład "funkcje geometryczne" i importowanie
parent
5b11de5c
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
877 additions
and
0 deletions
+877
-0
Importowanie0.java
...main/java/pcz/p06_funkcje/importowanie/Importowanie0.java
+99
-0
Importowanie1.java
...main/java/pcz/p06_funkcje/importowanie/Importowanie1.java
+106
-0
Importowanie2.java
...main/java/pcz/p06_funkcje/importowanie/Importowanie2.java
+114
-0
Importowanie3.java
...main/java/pcz/p06_funkcje/importowanie/Importowanie3.java
+123
-0
Importowanie4.java
...main/java/pcz/p06_funkcje/importowanie/Importowanie4.java
+109
-0
Geometria.java
...SE/src/main/java/pcz/p06_funkcje/przyklady/Geometria.java
+113
-0
JednostkiMiary.java
...c/main/java/pcz/p06_funkcje/przyklady/JednostkiMiary.java
+59
-0
ProgramGeometrycznyKonsolowy.java
...z/p06_funkcje/przyklady/ProgramGeometrycznyKonsolowy.java
+95
-0
ProgramGeometrycznyOkienkowy.java
...z/p06_funkcje/przyklady/ProgramGeometrycznyOkienkowy.java
+42
-0
TestyGeometrii.java
...c/main/java/pcz/p06_funkcje/przyklady/TestyGeometrii.java
+17
-0
No files found.
P01-JavaSE/src/main/java/pcz/p06_funkcje/importowanie/Importowanie0.java
0 → 100644
View file @
dc1ca34f
package
pcz
.
p06_funkcje
.
importowanie
;
/* W tej wersji programu nie ma żadnych importów, a wszystkie odwołania do klasy Geometria
* oraz standardowych klas JOptionPane i Random są poprzedzone nazwą pakietu.
*
* W języku Java ZAWSZE da się napisać program bez użycia import.
*/
public
class
Importowanie0
{
public
static
void
main
(
String
[]
args
)
{
@SuppressWarnings
(
"resource"
)
java
.
util
.
Scanner
scanner
=
new
java
.
util
.
Scanner
(
System
.
in
);
petla:
while
(
true
)
try
{
System
.
out
.
println
(
"\nWybierz figurę:"
);
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"
->
{
// muszę użyć "etykiety", aby powiedzieć Javie, że przerywam pętlę while, a nie samego switcha
break
petla
;
}
case
"K"
->
{
System
.
out
.
print
(
"Podaj długość boku kwadratu: "
);
double
a
=
scanner
.
nextDouble
();
double
pole
=
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.
poleKwadratu
(
a
);
double
obwod
=
pcz
.
p06_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
"P"
->
{
System
.
out
.
print
(
"Podaj długość pierwszego boku prostokąta: "
);
double
a
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość drugiego boku prostokąta: "
);
double
b
=
scanner
.
nextDouble
();
double
pole
=
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.
poleProstokata
(
a
,
b
);
double
obwod
=
pcz
.
p06_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 długość pierwszego boku trójkąta: "
);
double
a
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość drugiego boku trójkąta: "
);
double
b
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość trzeciego boku trójkąta: "
);
double
c
=
scanner
.
nextDouble
();
double
pole
=
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.
poleTrojkata
(
a
,
b
,
c
);
double
obwod
=
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.
obwodTrojkata
(
a
,
b
,
c
);
System
.
out
.
printf
(
"Dla prostokąta o bokach %.3f i %.3f pole wynosi %.3f, a obwód %.3f\n"
,
a
,
b
,
pole
,
obwod
);
}
case
"O"
->
{
System
.
out
.
print
(
"Podaj promień koła: "
);
double
r
=
scanner
.
nextDouble
();
double
pole
=
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.
poleKola
(
r
);
double
obwod
=
pcz
.
p06_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
"KM"
->
{
System
.
out
.
print
(
"Podaj odległość w kilometrach: "
);
double
km
=
scanner
.
nextDouble
();
double
wynik
=
pcz
.
p06_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
=
pcz
.
p06_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
=
pcz
.
p06_funkcje
.
przyklady
.
JednostkiMiary
.
far_na_cel
(
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
=
pcz
.
p06_funkcje
.
przyklady
.
JednostkiMiary
.
cel_na_far
(
c
);
System
.
out
.
printf
(
"%.3f °C = %.3f °F\n"
,
c
,
wynik
);
}
default
->
{
System
.
out
.
println
(
"Nieznane polecenie "
+
wybor
);
}
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"Błąd: "
+
e
);
}
}
}
P01-JavaSE/src/main/java/pcz/p06_funkcje/importowanie/Importowanie1.java
0 → 100644
View file @
dc1ca34f
package
pcz
.
p06_funkcje
.
importowanie
;
import
java.util.Scanner
;
import
pcz.p06_funkcje.przyklady.Geometria
;
import
pcz.p06_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
Importowanie1
{
public
static
void
main
(
String
[]
args
)
{
@SuppressWarnings
(
"resource"
)
Scanner
scanner
=
new
Scanner
(
System
.
in
);
petla:
while
(
true
)
try
{
System
.
out
.
println
(
"\nWybierz figurę:"
);
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"
->
{
// muszę użyć "etykiety", aby powiedzieć Javie, że przerywam pętlę while, a nie samego switcha
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
"P"
->
{
System
.
out
.
print
(
"Podaj długość pierwszego boku prostokąta: "
);
double
a
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość drugiego boku prostokąta: "
);
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 długość pierwszego boku trójkąta: "
);
double
a
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość drugiego boku trójkąta: "
);
double
b
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość trzeciego boku trójkąta: "
);
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 i %.3f pole wynosi %.3f, a obwód %.3f\n"
,
a
,
b
,
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
"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
.
far_na_cel
(
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
.
cel_na_far
(
c
);
System
.
out
.
printf
(
"%.3f °C = %.3f °F\n"
,
c
,
wynik
);
}
default
->
{
System
.
out
.
println
(
"Nieznane polecenie "
+
wybor
);
}
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"Błąd: "
+
e
);
}
}
}
P01-JavaSE/src/main/java/pcz/p06_funkcje/importowanie/Importowanie2.java
0 → 100644
View file @
dc1ca34f
package
pcz
.
p06_funkcje
.
importowanie
;
import
java.util.*
;
import
pcz.p06_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 Importowanie1)
* 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
Importowanie2
{
public
static
void
main
(
String
[]
args
)
{
@SuppressWarnings
(
"resource"
)
Scanner
scanner
=
new
Scanner
(
System
.
in
);
petla:
while
(
true
)
try
{
System
.
out
.
println
(
"\nWybierz figurę:"
);
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"
->
{
// muszę użyć "etykiety", aby powiedzieć Javie, że przerywam pętlę while, a nie samego switcha
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
"P"
->
{
System
.
out
.
print
(
"Podaj długość pierwszego boku prostokąta: "
);
double
a
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość drugiego boku prostokąta: "
);
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 długość pierwszego boku trójkąta: "
);
double
a
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość drugiego boku trójkąta: "
);
double
b
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość trzeciego boku trójkąta: "
);
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 i %.3f pole wynosi %.3f, a obwód %.3f\n"
,
a
,
b
,
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
"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
.
far_na_cel
(
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
.
cel_na_far
(
c
);
System
.
out
.
printf
(
"%.3f °C = %.3f °F\n"
,
c
,
wynik
);
}
default
->
{
System
.
out
.
println
(
"Nieznane polecenie "
+
wybor
);
}
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"Błąd: "
+
e
);
}
}
}
P01-JavaSE/src/main/java/pcz/p06_funkcje/importowanie/Importowanie3.java
0 → 100644
View file @
dc1ca34f
package
pcz
.
p06_funkcje
.
importowanie
;
import
static
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.
obwodKola
;
import
static
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.
obwodKwadratu
;
import
static
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.
obwodProstokata
;
import
static
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.
obwodTrojkata
;
import
static
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.
poleKola
;
import
static
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.
poleKwadratu
;
import
static
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.
poleProstokata
;
import
static
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.
poleTrojkata
;
import
static
pcz
.
p06_funkcje
.
przyklady
.
JednostkiMiary
.
cel_na_far
;
import
static
pcz
.
p06_funkcje
.
przyklady
.
JednostkiMiary
.
far_na_cel
;
import
static
pcz
.
p06_funkcje
.
przyklady
.
JednostkiMiary
.
km_na_mile
;
import
static
pcz
.
p06_funkcje
.
przyklady
.
JednostkiMiary
.
mile_na_km
;
// można też importować zmienne / stałe statyczne:
import
static
java
.
lang
.
Math
.
PI
;
import
java.util.Scanner
;
/* Gdy w programie korzystamy tylko z elementów statycznych klasy X (z metod statycznych, zmiennych statycznych, stałych),
* to zamiast importować tę klasę i wywoływać te elementy pisząc X.metoda
* można zaimportować statycznie tę metodę (albo zmienną, stałą ...).
*
* Wtedy w treści programy używamy zaimportowanych rzeczy tak, jakby były zdefiniowane w naszej klasie.
* (albo tak jakby były funkcjami, tak jak w Pythonie, C++, PHP itp...)
*
* Nie ma jak użyć import static w stosunku do klasy Scanner, bo jej używamy w sposób "obiektowy":
* tworzony jest obiekt klasy Scanner i na nim wywoływana jest metoda (nie jest statyczna).
*/
public
class
Importowanie3
{
public
static
void
main
(
String
[]
args
)
{
@SuppressWarnings
(
"resource"
)
Scanner
scanner
=
new
Scanner
(
System
.
in
);
System
.
out
.
println
(
"Liczba pi: "
+
PI
);
petla:
while
(
true
)
try
{
System
.
out
.
println
(
"\nWybierz figurę:"
);
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"
->
{
// muszę użyć "etykiety", aby powiedzieć Javie, że przerywam pętlę while, a nie samego switcha
break
petla
;
}
case
"K"
->
{
System
.
out
.
print
(
"Podaj długość boku kwadratu: "
);
double
a
=
scanner
.
nextDouble
();
double
pole
=
poleKwadratu
(
a
);
double
obwod
=
obwodKwadratu
(
a
);
System
.
out
.
printf
(
"Dla kwadratu o boku %.3f pole wynosi %.3f, a obwód %.3f\n"
,
a
,
pole
,
obwod
);
}
case
"P"
->
{
System
.
out
.
print
(
"Podaj długość pierwszego boku prostokąta: "
);
double
a
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość drugiego boku prostokąta: "
);
double
b
=
scanner
.
nextDouble
();
double
pole
=
poleProstokata
(
a
,
b
);
double
obwod
=
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 długość pierwszego boku trójkąta: "
);
double
a
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość drugiego boku trójkąta: "
);
double
b
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość trzeciego boku trójkąta: "
);
double
c
=
scanner
.
nextDouble
();
double
pole
=
poleTrojkata
(
a
,
b
,
c
);
double
obwod
=
obwodTrojkata
(
a
,
b
,
c
);
System
.
out
.
printf
(
"Dla prostokąta o bokach %.3f i %.3f pole wynosi %.3f, a obwód %.3f\n"
,
a
,
b
,
pole
,
obwod
);
}
case
"O"
->
{
System
.
out
.
print
(
"Podaj promień koła: "
);
double
r
=
scanner
.
nextDouble
();
double
pole
=
poleKola
(
r
);
double
obwod
=
obwodKola
(
r
);
System
.
out
.
printf
(
"Dla koła o promieniu %.3f pole wynosi %.3f, a obwód %.3f\n"
,
r
,
pole
,
obwod
);
}
case
"KM"
->
{
System
.
out
.
print
(
"Podaj odległość w kilometrach: "
);
double
km
=
scanner
.
nextDouble
();
double
wynik
=
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
=
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
=
far_na_cel
(
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
=
cel_na_far
(
c
);
System
.
out
.
printf
(
"%.3f °C = %.3f °F\n"
,
c
,
wynik
);
}
default
->
{
System
.
out
.
println
(
"Nieznane polecenie "
+
wybor
);
}
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"Błąd: "
+
e
);
}
}
}
P01-JavaSE/src/main/java/pcz/p06_funkcje/importowanie/Importowanie4.java
0 → 100644
View file @
dc1ca34f
package
pcz
.
p06_funkcje
.
importowanie
;
import
static
pcz
.
p06_funkcje
.
przyklady
.
Geometria
.*;
import
static
pcz
.
p06_funkcje
.
przyklady
.
JednostkiMiary
.*;
// można też importować zmienne / stałe statyczne:
import
static
java
.
lang
.
Math
.*;
import
java.util.Scanner
;
/* import static pakiet.Klasa.* importuje wszystkie rzeczy statyczne z podanej klasy.
*
* Nie da się użyć gwiazdek na poziomie pakietu i klasy w jednym imporcie.
* To nie przejdzie:
* import static funkcje.*.*;
*/
public
class
Importowanie4
{
public
static
void
main
(
String
[]
args
)
{
@SuppressWarnings
(
"resource"
)
Scanner
scanner
=
new
Scanner
(
System
.
in
);
System
.
out
.
println
(
"Liczba pi: "
+
PI
);
petla:
while
(
true
)
try
{
System
.
out
.
println
(
"\nWybierz figurę:"
);
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"
->
{
// muszę użyć "etykiety", aby powiedzieć Javie, że przerywam pętlę while, a nie samego switcha
break
petla
;
}
case
"K"
->
{
System
.
out
.
print
(
"Podaj długość boku kwadratu: "
);
double
a
=
scanner
.
nextDouble
();
double
pole
=
poleKwadratu
(
a
);
double
obwod
=
obwodKwadratu
(
a
);
System
.
out
.
printf
(
"Dla kwadratu o boku %.3f pole wynosi %.3f, a obwód %.3f\n"
,
a
,
pole
,
obwod
);
}
case
"P"
->
{
System
.
out
.
print
(
"Podaj długość pierwszego boku prostokąta: "
);
double
a
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość drugiego boku prostokąta: "
);
double
b
=
scanner
.
nextDouble
();
double
pole
=
poleProstokata
(
a
,
b
);
double
obwod
=
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 długość pierwszego boku trójkąta: "
);
double
a
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość drugiego boku trójkąta: "
);
double
b
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość trzeciego boku trójkąta: "
);
double
c
=
scanner
.
nextDouble
();
double
pole
=
poleTrojkata
(
a
,
b
,
c
);
double
obwod
=
obwodTrojkata
(
a
,
b
,
c
);
System
.
out
.
printf
(
"Dla prostokąta o bokach %.3f i %.3f pole wynosi %.3f, a obwód %.3f\n"
,
a
,
b
,
pole
,
obwod
);
}
case
"O"
->
{
System
.
out
.
print
(
"Podaj promień koła: "
);
double
r
=
scanner
.
nextDouble
();
double
pole
=
poleKola
(
r
);
double
obwod
=
obwodKola
(
r
);
System
.
out
.
printf
(
"Dla koła o promieniu %.3f pole wynosi %.3f, a obwód %.3f\n"
,
r
,
pole
,
obwod
);
}
case
"KM"
->
{
System
.
out
.
print
(
"Podaj odległość w kilometrach: "
);
double
km
=
scanner
.
nextDouble
();
double
wynik
=
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
=
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
=
far_na_cel
(
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
=
cel_na_far
(
c
);
System
.
out
.
printf
(
"%.3f °C = %.3f °F\n"
,
c
,
wynik
);
}
default
->
{
System
.
out
.
println
(
"Nieznane polecenie "
+
wybor
);
}
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"Błąd: "
+
e
);
}
}
}
P01-JavaSE/src/main/java/pcz/p06_funkcje/przyklady/Geometria.java
0 → 100644
View file @
dc1ca34f
package
pcz
.
p06_funkcje
.
przyklady
;
// Specjalne komentarze pisane /** Opis */ tworzą dokumentację nazywaną "javadoc".
// W Eclipse można je wprowadzać skrótem Alt+Shift+J
/**
* @author patryk
*
* Klasa narzędziowa zawierająca metody statyczne służące do obliczania pól i obwodów figur geometrycznych.
*
* To jest przykład klasy, w której nie ma metody main, tylko są zdefiniowane inne metody.
*/
public
class
Geometria
{
static
{
// Blok inicjalizacyjny statyczny to jest taki fragment kodu, który wykonuje się w momencie ładowania klasy do pamięci.
System
.
out
.
println
(
"ładowana jest klasa Geometria"
);
}
/** Oblicza pole kwadratu o podanym boku.
*
* @param a długość boku
* @return obliczone pole kwadratu
*/
public
static
double
poleKwadratu
(
double
a
)
{
return
a
*
a
;
}
/** Oblicza obwód kwadratu o podanym boku.
*
* @param a długość boku
* @return obliczony obwód kwadratu
*/
public
static
double
obwodKwadratu
(
double
a
)
{
return
4
*
a
;
}
/** Oblicza pole prostokąta o podanych bokach.
*
* @param a długość pierwszego boku
* @param b długość drugiego boku
* @return obliczone pole prostokąta
*/
public
static
double
poleProstokata
(
double
a
,
double
b
)
{
return
a
*
b
;
}
/** Oblicza obwód prostokąta o podanych bokach.
*
* @param a długość pierwszego boku
* @param b długość drugiego boku
* @return obliczony obwód prostokąta
*/
public
static
double
obwodProstokata
(
double
a
,
double
b
)
{
return
2
*
a
+
2
*
b
;
}
/** Oblicza pole koła o podanym promieniu.
*
* @param r promień koła
* @return obliczone pole koła
*/
public
static
double
poleKola
(
double
r
)
{
return
Math
.
PI
*
r
*
r
;
}
/** Oblicza obwód koła (aka długość okręgu) o podanym promieniu.
*
* @param r promień koła
* @return obliczony obwód koła
*/
public
static
double
obwodKola
(
double
r
)
{
return
Math
.
PI
*
2
*
r
;
}
/** Sprawdza czy z boków o podanych długościach da się ułożyć trójkąt.
*
* @param a długość pierwszego boku
* @param b długość drugiego boku
* @param c długość trzeciego boku
* @return <code>true</code> jeśli podane boki spełniają <dfn>warunek trójkąta</dfn>, <code>false</code> w przeciwnym przypadku
*/
static
boolean
poprawnyTrojkat
(
double
a
,
double
b
,
double
c
)
{
return
a
>
0
&&
b
>
0
&&
c
>
0
&&
a
<
b
+
c
&&
b
<
a
+
c
&&
c
<
a
+
b
;
}
/** Oblicza pole trójkąta na podstawie długości boków.
*
* @param a długość pierwszego boku
* @param b długość drugiego boku
* @param c długość trzeciego boku
* @return obliczone pole trójkąta
* @throws IllegalArgumentException w przypadku, gdy z podanych boków nie da się ułożyć trójkąta
*/
public
static
double
poleTrojkata
(
double
a
,
double
b
,
double
c
)
{
if
(!
poprawnyTrojkat
(
a
,
b
,
c
))
{
throw
new
IllegalArgumentException
(
"Boki nie pasują, nie da się złożyć trójkąta."
);
}
double
p
=
(
a
+
b
+
c
)
/
2
.;
return
Math
.
sqrt
(
p
*
(
p
-
a
)
*
(
p
-
b
)
*
(
p
-
c
));
}
/** Oblicza obwód trójkąta na podstawie długości boków.
*
* @param a długość pierwszego boku
* @param b długość drugiego boku
* @param c długość trzeciego boku
* @return obliczony obwód trójkąta
*/
public
static
double
obwodTrojkata
(
double
a
,
double
b
,
double
c
)
{
return
a
+
b
+
c
;
}
}
P01-JavaSE/src/main/java/pcz/p06_funkcje/przyklady/JednostkiMiary.java
0 → 100644
View file @
dc1ca34f
package
pcz
.
p06_funkcje
.
przyklady
;
public
class
JednostkiMiary
{
static
{
System
.
out
.
println
(
"ładowana jest klasa JednostkiMiary"
);
}
/** Funkcja przelicza podaną liczbę mil na kilometry. */
public
static
double
mile_na_km
(
double
mile
)
{
return
mile
*
1.609344
;
}
// Napisz w tym miejscu funkcję km_na_mile , która przelicza w drugą stronę, a do main dopisz 2-3 przykładowe wywołania
public
static
double
km_na_mile
(
double
km
)
{
return
km
/
1.609344
;
}
// Napisz funkcje far_na_cel i cel_na_far
// które przeliczają temperaturę w stopniach Fahrenheita na stopnie Celsjusza i odwrotnie
// https://pl.wikipedia.org/wiki/Skala_Fahrenheita
public
static
double
far_na_cel
(
double
far
)
{
// źle: return 5/9 * (far - 32);
// kilka poprawnych rozwiązań:
return
5
.
/
9
.
*
(
far
-
32
.);
// return (far - 32) * 5/9;
// return (far - 32) / 1.8;
}
public
static
double
cel_na_far
(
double
cel
)
{
//źle: return 32 + 9/5 * cel;
// poprawne:
// return 32. + 9./5. * cel;
// return cel * 9 / 5 + 32;
return
1.8
*
cel
+
32
;
}
public
static
void
main
(
String
[]
args
)
{
// Ten program nie będzie interaktywny, nie będzie pytać użytkownika o dane.
// Tutaj tylko przetestujemy funkcje na kilku wartościach.
System
.
out
.
println
(
"100 mil = "
+
mile_na_km
(
100
)
+
" km"
);
System
.
out
.
println
(
"500 mil = "
+
mile_na_km
(
500
)
+
" km"
);
System
.
out
.
println
();
System
.
out
.
println
(
"100 km = "
+
km_na_mile
(
100
)
+
" mil"
);
System
.
out
.
println
(
"160 km = "
+
km_na_mile
(
160
)
+
" mil"
);
System
.
out
.
println
();
System
.
out
.
println
(
"0 F = "
+
far_na_cel
(
0
)
+
" C"
);
System
.
out
.
println
(
"100 F = "
+
far_na_cel
(
100
)
+
" C"
);
// 37.7
System
.
out
.
println
();
System
.
out
.
println
(
"0 C = "
+
cel_na_far
(
0
)
+
" F"
);
System
.
out
.
println
(
"37 C = "
+
cel_na_far
(
37
)
+
" F"
);
System
.
out
.
println
(
"100 C = "
+
cel_na_far
(
100
)
+
" F"
);
}
}
P01-JavaSE/src/main/java/pcz/p06_funkcje/przyklady/ProgramGeometrycznyKonsolowy.java
0 → 100644
View file @
dc1ca34f
package
pcz
.
p06_funkcje
.
przyklady
;
import
java.util.Scanner
;
public
class
ProgramGeometrycznyKonsolowy
{
public
static
void
main
(
String
[]
args
)
{
@SuppressWarnings
(
"resource"
)
Scanner
scanner
=
new
Scanner
(
System
.
in
);
petla:
while
(
true
)
try
{
System
.
out
.
println
(
"\nWybierz figurę:"
);
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"
->
{
// muszę użyć "etykiety", aby powiedzieć Javie, że przerywam pętlę while, a nie samego switcha
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
"P"
->
{
System
.
out
.
print
(
"Podaj długość pierwszego boku prostokąta: "
);
double
a
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość drugiego boku prostokąta: "
);
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 długość pierwszego boku trójkąta: "
);
double
a
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość drugiego boku trójkąta: "
);
double
b
=
scanner
.
nextDouble
();
System
.
out
.
print
(
"Podaj długość trzeciego boku trójkąta: "
);
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 i %.3f pole wynosi %.3f, a obwód %.3f\n"
,
a
,
b
,
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
"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
.
far_na_cel
(
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
.
cel_na_far
(
c
);
System
.
out
.
printf
(
"%.3f °C = %.3f °F\n"
,
c
,
wynik
);
}
default
->
{
System
.
out
.
println
(
"Nieznane polecenie "
+
wybor
);
}
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"Błąd: "
+
e
);
}
}
}
P01-JavaSE/src/main/java/pcz/p06_funkcje/przyklady/ProgramGeometrycznyOkienkowy.java
0 → 100644
View file @
dc1ca34f
package
pcz
.
p06_funkcje
.
przyklady
;
import
javax.swing.JOptionPane
;
public
class
ProgramGeometrycznyOkienkowy
{
public
static
void
main
(
String
[]
args
)
{
String
[]
figury
=
{
"kwadrat"
,
"prostokąt"
,
"koło"
};
String
figura
=
(
String
)
JOptionPane
.
showInputDialog
(
null
,
"Wybierz rodzaj figury"
,
"Wybór"
,
JOptionPane
.
QUESTION_MESSAGE
,
null
,
figury
,
null
);
switch
(
figura
)
{
case
"kwadrat"
->
{
double
a
=
Double
.
parseDouble
(
JOptionPane
.
showInputDialog
(
"Podaj długość boku:"
));
double
pole
=
Geometria
.
poleKwadratu
(
a
);
double
obwod
=
Geometria
.
obwodKwadratu
(
a
);
JOptionPane
.
showMessageDialog
(
null
,
"Pole: "
+
pole
+
"\nObwód: "
+
obwod
);
}
case
"prostokąt"
->
{
double
a
=
Double
.
parseDouble
(
JOptionPane
.
showInputDialog
(
"Podaj długość 1. boku:"
));
double
b
=
Double
.
parseDouble
(
JOptionPane
.
showInputDialog
(
"Podaj długość 2. boku:"
));
double
pole
=
Geometria
.
poleProstokata
(
a
,
b
);
double
obwod
=
Geometria
.
obwodProstokata
(
a
,
b
);
JOptionPane
.
showMessageDialog
(
null
,
"Pole: "
+
pole
+
"\nObwód: "
+
obwod
);
}
case
"koło"
->
{
double
r
=
Double
.
parseDouble
(
JOptionPane
.
showInputDialog
(
"Podaj promień koła:"
));
double
pole
=
Geometria
.
poleKola
(
r
);
double
obwod
=
Geometria
.
obwodKola
(
r
);
JOptionPane
.
showMessageDialog
(
null
,
"Pole: "
+
pole
+
"\nObwód: "
+
obwod
);
}
}
}
}
P01-JavaSE/src/main/java/pcz/p06_funkcje/przyklady/TestyGeometrii.java
0 → 100644
View file @
dc1ca34f
package
pcz
.
p06_funkcje
.
przyklady
;
public
class
TestyGeometrii
{
public
static
void
main
(
String
[]
args
)
{
// proste testy polegające na wywołaniu funkcji dla przykładowych wartości i wypisaniu wyniku
System
.
out
.
println
(
"pole kwadratu 5 = "
+
Geometria
.
poleKwadratu
(
5
));
System
.
out
.
println
(
"obwód kwadratu 5 = "
+
Geometria
.
obwodKwadratu
(
5
));
System
.
out
.
println
(
"pole prostokąta 3x4 = "
+
Geometria
.
poleProstokata
(
3
,
4
));
System
.
out
.
println
(
"obwód prostokąta 3x4 = "
+
Geometria
.
obwodProstokata
(
3
,
4
));
System
.
out
.
println
(
"pole koła 5 = "
+
Geometria
.
poleKola
(
5
));
System
.
out
.
println
(
"obwód koła 5 = "
+
Geometria
.
obwodKola
(
5
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment