ukryj menu
SPEC
aktualizacja: 2022-03-13 20:59:44
1. funkcje - opis
W poniższych przykładach widać, że funkcje są napisane w obrębie klasy Test
Funkcje zwracają odpowiedni typ danych (String, int, double), lub nic nie zwracają (void) czyli wykonują jakieś działanie
Można do nich przekazać argumenty odpowiednich typów rozdzielone przecinkamiModyfikator static w poniższych przykładach oznacza, że funkcję można wywołać bez tworzenia obiektu klasy w której się znajduje, czyli klasy Test.
Ciało funkcji jest zamknięte w nawiasach klamrowych {}
przykład kilku funkcji
class Test {
public static void main(String[] args) {
System.out.println(isBigger(4));
System.out.println(isBigger(110));
System.out.println(printString());
System.out.println(rectArea(2,4));
makeSomething();
makeSomething2();
}
static boolean isBigger(int x) {
return x > 100;
}
static int rectArea(int a, int b){
return a * b;
}
static String printString(){
return "any string";
}
static void makeSomething() {
System.out.println("makeSomething");
}
static void makeSomething2() {
System.out.println("makeSomething2");
}
}
kopiuj
Uwaga ogólna: wszystkie println muszą być w funkcjach a funkcje wywołane w main lub w innych funkcjach
Nie ma możliwości pisania kodu poza funkcjami
2. vararg... - dowolna ilość argumentów funkcji
dla nieznanej ilości argumentów jednego typu, możemy określić jeden argument vararg
Uwaga: parametr vararg może wystąpić tylko raz w danej metodzie
Uwaga: musi być ostatnim argumentem
przykład 1
static String formatSth(String... args){
return Arrays.toString(args);
}
System.out.println(formatSth("a","b","c","d"));kopiuj
przyklad 2
static String[] formatSth2(String... args){
return args;
}
System.out.println(Arrays.toString(formatSth2("d","e","f")));kopiuj
3. wartości domyślne argumentów
w Javie argument funkcji NIE mają domyślnych wartości
4. kolekcje
W Javie istnieje ogrom kolekcji, czyli struktur przechowujących różne typy danych
Są w pakiecie java.util, który musi być zaimportowany
Należą do nich:
- listy (list),
- zbiory (set),
- mapy (map)
- inne
Kolekcje nie mają określonego z góry rozmiaru jak tablice
Każda kolekcja ma metody takie jak add(), remove(), get(), size() i wiele innych w zależności od kolekcji
Ważne: kompilator podpowiada których można użyć w danym momencie, a których nie5. listy
Typowym przykładem listy jest ArrayList, przechowująca dane określonego typu
przykład 1
ArrayList<String> items = new ArrayList<>();
items.add("a");
items.add("b");
items.add("c");
System.out.println(items);
System.out.println(items.get(0));kopiuj
przykład 2
ArrayList<Integer> items2 = new ArrayList<>();
items2.add(1);
items2.add(2);
items2.add(3);
System.out.println(items2);
System.out.println(items2.get(0));kopiuj
usuwanie po indeksie
items2.remove(0);kopiuj
usuwanie wszystkich elementów listy
items2.clear();kopiuj
iteracja
for(int i = 0;i<items2.size();i++){
System.out.println(items2.get(i));
}kopiuj
5. set - lista bez duplikatów
działanie można porównać z listami, różnica to brak duplikatów w Set
dodanie danych
set1.add("a");
set1.add("b");
set1.add("c");
set1.add("a");
set1.add("a");
System.out.println(set1);kopiuj
wielkość seta
System.out.println(set1.size());kopiuj
pobranie danych, po przekształceniu na tablicę
String[] array = (String[]) set1.toArray();
System.out.println(array[0]);kopiuj
System.out.println(array[0]);kopiuj
pobranie danych, po przekształceniu na arraylist
ArrayList<String> list = new ArrayList<>(set1);
System.out.println(list.get(0));kopiuj
System.out.println(list.get(0));kopiuj
usuwanie danych
set1.remove("a");kopiuj
union - suma dwóch setów
Set<String> set1 = new HashSet<>();
set1.add("a");
set1.add("b");
Set<String> set2 = new HashSet<>();
set2.add("a");
set2.add("e");
set1.addAll(set2);
System.out.println(set1);kopiuj
set1.add("a");
set1.add("b");
Set<String> set2 = new HashSet<>();
set2.add("a");
set2.add("e");
set1.addAll(set2);
System.out.println(set1);kopiuj
intersect - część wspólna dwóch setów
6. map
mapy zawierają w każdym indeksie parę: klucz i wartość
Map<String, Integer> map = new HashMap<String, Integer>();kopiuj
dodanie danych
map.put("b", 200);
map.put("c", 300);
map.put("d", 400);
map.put("a", 200);
System.out.println(map);
System.out.println(map.get("a"));
kopiuj
7. sposoby inicjalizacji list od razu z wstępnymi danymi
a) list
ArrayList<String> list = new ArrayList<>() {
{
add("a");
add("b");
add("c");
}
};
System.out.println("ArrayList : " + list);kopiuj
lub dane z tablicy
ArrayList<String> list2 = new ArrayList<>(
Arrays.asList(
"a",
"b",
"c")
);
System.out.println("ArrayList : " + list2);kopiuj
Arrays.asList(
"a",
"b",
"c")
);
System.out.println("ArrayList : " + list2);kopiuj
lub z list
List<Integer> list = Arrays.asList(3, 6, 9, 12, 15);
System.out.println(list);kopiuj
b) set
Set<String> set1 = new HashSet<>(){
{
add("a");
add("b");
add("c");
add("a");
}
};
System.out.println(set1);kopiuj
c) map
Map<String, Integer> map = new HashMap<>(){
{
put("a", 100);
put("b", 200);
put("c", 300);
}
};
System.out.println(map);kopiuj
8. iteracja po kolekcjach
a) list
tradycyjny for
ArrayList<Integer> items2 = new ArrayList<>();
items2.add(1);
items2.add(2);
items2.add(3);
for(int i = 0;i<items2.size();i++){
System.out.println(items2.get(i));
}kopiuj
for in
for (Integer i : items2) {
System.out.println(i);
}kopiuj
b) map
Map<String, Integer> map1 = new HashMap<>(){
{
put("a", 100);
put("b", 200);
put("c", 300);
}
};
kopiuj
{
put("a", 100);
put("b", 200);
put("c", 300);
}
};
kopiuj
map zachowuje się jak obiekt w js, podobnie też czytamy z niego dane: klucz i wartość
poniżej trzy sposoby
for (String key : map1.keySet()) {
System.out.println(key + ":" + map1.get(key));
}
for (Integer value : map1.values()) {
System.out.println(value);
}
for (Map.Entry<String, Integer> entry : map1.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
kopiuj
System.out.println(key + ":" + map1.get(key));
}
for (Integer value : map1.values()) {
System.out.println(value);
}
for (Map.Entry<String, Integer> entry : map1.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
kopiuj
c) set
Set<String> set1 = new HashSet<>(){
{
add("a");
add("b");
add("c");
}
};
for (String s : set1) {
System.out.println(s);
}kopiuj
{
add("a");
add("b");
add("c");
}
};
for (String s : set1) {
System.out.println(s);
}kopiuj
Są jeszcze niezliczone metody oparte o operator lambda, jednak zostawimy je na inna okazję
9. zadania
1. Zadanie przykładowe - napisz program, który do kolekcji ArrayList dodaje 6 różnych imion, a następnie je sortuje.
Zadaniem jest wypisywanie, które utwórz w osobnej funkcji printujListe(), przyjmującej listę jako argument
class Zadanie01 {
public static void main(String[] args) {
System.out.println("SORTOWANIE");
ArrayList<String> lista = new ArrayList<>();
lista.add("Julia");
lista.add("Agata");
lista.add("Zenek");
lista.add("Jarek");
lista.add("Kasia");
lista.add("Dominika");
System.out.println("Elementy nieposortowane.");
printujListe(lista);
Collections.sort(lista);
System.out.println("Elementy posortowane.");
printujListe(lista);
}
static void printujListe(ArrayList<String> lista){
// uzupełnij zadanie
}
}kopiuj
public static void main(String[] args) {
System.out.println("SORTOWANIE");
ArrayList<String> lista = new ArrayList<>();
lista.add("Julia");
lista.add("Agata");
lista.add("Zenek");
lista.add("Jarek");
lista.add("Kasia");
lista.add("Dominika");
System.out.println("Elementy nieposortowane.");
printujListe(lista);
Collections.sort(lista);
System.out.println("Elementy posortowane.");
printujListe(lista);
}
static void printujListe(ArrayList<String> lista){
// uzupełnij zadanie
}
}kopiuj
output z konsoli ma wyglądać dokładnie jak poniżej (kropka na końcu)
SORTOWANIE
Elementy nieposortowane.
Julia-Agata-Zenek-Jarek-Kasia-Dominika.
Elementy posortowane.
Agata-Dominika-Jarek-Julia-Kasia-Zenek. kopiuj
Elementy nieposortowane.
Julia-Agata-Zenek-Jarek-Kasia-Dominika.
Elementy posortowane.
Agata-Dominika-Jarek-Julia-Kasia-Zenek. kopiuj
2. Napisz program, który korzystając z ArrayList, umieszcza w niej liczby od 1 do n, a następnie je sumuje.
Wypisywanie utwórz w osobnej funkcji printujListe(), przyjmującej ArrayList i n jako argumenty
output z konsoli dokładnie jak poniżej, przykład do 100
SUMOWANIE
podaj n:
5
Wszystkie elementy:
[0, 1, 2, 3, 4, 5]
Suma = 15kopiuj
podaj n:
5
Wszystkie elementy:
[0, 1, 2, 3, 4, 5]
Suma = 15kopiuj
3. Napisz program, który "odwraca" stringa
Nie korzystaj z żadnych wbudowanych funkcji reversed()Utwórz własną funkcję przyjmująca stringa do odwrócenia, a zwracającą odwrócony string
Wywołaj funkcję dwukrotnie
Jeśli to możliwe, wykorzystaj kolekcje do przechowywania danych output z konsoli dokładnie jak poniżej
ODWRACANIE
podaj dowolny ciąg znaków:
java
odwrócone:
avaj
znów odwrócone:
javakopiuj
4. Napisz program, który oblicza wynik SCRABBLE dla zadanego słowa.
Będziesz potrzebować takiej mapy:
A, E, I, O, U, L, N, R, S, T - 1
D, G - 2
B, C, M, P - 3
F, H, V, W, Y - 4
K - 5
J, X - 8
Q, Z - 10
Przykład:
Słowo "javascript" powinno być ocenione na 24 punkty:
8 punkty za J
1 punkt za A, dwa razy
4 punkty za V
1 punkty dla S
3 punkt za C
1 punkty dla R
1 punkty dla I
3 punkty dla P
1 punkty dla T
W sumie:
8 + 2 * 1 + 4 + 1 + 3 + 1 + 1 + 3 + 1 = 24
Przebieg programu:
Napisz funkcję score() która przyjmuje znak, a zwraca jego wartość
Napisz funkcję scoreWord() która przyjmuje słowo, a zwraca ilość punktówpamiętaj, że String to tablica Char
wywołanie
public static void main(String[] args) {
System.out.println(scoreWord("javascript"));
System.out.println(scoreWord("java"));
}kopiuj
output z konsoli jak poniżej
SCRABBLE
javascript: 24 pkt
java: 14 pktkopiuj
5. Napisz program DIAMENT, który przyjmuje jako dane wejściowe jedną literę i wyświetla kształt rombu.
Biorąc pod uwagę literę, drukuje romb zaczynający się od "A", z dostarczoną literą w najszerszym miejscu.
Najlepiej zobaczyć przykłady działania poniżej
Wymagania
Pierwszy i ostatni wiersz zawiera jedno "A".
Wszystkie wiersze, z wyjątkiem pierwszego i ostatniego, mają dokładnie dwie identyczne litery.
Wszystkie wiersze mają tyle samo kropek na końcu, ile na początku
Diament jest symetryczny w poziomie i w pionie.
Diament ma kwadratowy kształt (szerokość równa się wysokości).
Litery tworzą kształt rombu.
W górnej połowie litery są ułożone rosnąco.
Dolna połowa zawiera litery w porządku malejącym.
Cztery rogi (zawierające kropki) to trójkąty.
Przykłady
Diament na literę "A":
Akopiuj
Diament na literę "C":
··A··
·B·B·
C···C
·B·B·
··A··kopiuj
Diament na literę "E":
····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····kopiuj
wywołanie
public static void main(String[] args) {
System.out.println(printDiament('C'));
}kopiuj
6. Napisz funkcję, która sprawdza brakujące znaki z alfabetu, w podanym stringu.
Funkcja przyjmuje stringa do analizy i zwraca stringa z brakującymi znakami
przyjmujemy, że cały alfabet to: abcdefghijklmnopqrstuvwxyz
użyj dowolnej/ych kolekcji
input: "abcdefghijklmnop"
output
"qrstuvwxyz"kopiuj
input "Nad Niemnem Elizy Orzeszkowej"
output
"bcfghpqtuvx"kopiuj
wywołanie
public static void main(String[] args) {
System.out.println(check("abc"));
}kopiuj
7. Zaimplementuj klasyczny trójkąt Pascala
output z konsoli
podaj liczbę wierszy trójkąta:
7
rysowanie:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1kopiuj
7
rysowanie:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1kopiuj
sugestia:
napisz funkcję, która dostaje numer wiersza, a zwraca wiersz trójkąta w postaci ArrayList
8. Mamy listę A z liczbami całkowitymi, niektóre z nich powinny się powtarzać.
Na
jej podstawie utwórz listę z wszystkimi liczbami, które
występują w liście A, ale każda z nich powinna występować tylko raz.
Np: na podstawie listy [0, 2, 4, 2, 6, 7, 4, 3, 12, 6] utwórz listę [0, 2, 4, 6, 7, 3, 12].
Np: na podstawie listy [0, 2, 4, 2, 6, 7, 4, 3, 12, 6] utwórz listę [0, 2, 4, 6, 7, 3, 12].
9. Wyszukiwanie znaków
napisz program umożliwiający wprowadzenie dowolnej liczby słów i wyszukanie ilości wystąpień zadanego znaku
program sortuje output według ilości wystąpień zadanego znaku
użyj w programie dowolnej kolekcji
output
Wprowadź literę:
a
Wprowadzaj ciągi znaków, lub napisz /koniec aby zakończyć wprowadzanie
kraków
krasnystaw
koparka
ksero
/koniec
== Ilość wystąpień: 2 ==
- krasnystaw
- koparka
== Ilość wystąpień: 1 ==
- kraków
== Ilość wystąpień: 0 ==
- kserokopiuj
a
Wprowadzaj ciągi znaków, lub napisz /koniec aby zakończyć wprowadzanie
kraków
krasnystaw
koparka
ksero
/koniec
== Ilość wystąpień: 2 ==
- krasnystaw
- koparka
== Ilość wystąpień: 1 ==
- kraków
== Ilość wystąpień: 0 ==
- kserokopiuj