Języki programowania (sem. III) - przykłady Zamiana System.out na
Transkrypt
Języki programowania (sem. III) - przykłady Zamiana System.out na
Języki programowania (sem. III) - przykłady Zamiana System.out na PrintWriter import java.io.*; public class program { public static void main(String[] args) { PrintWriter out= new PrintWriter(System.out,true); out.println("żźćłó"); } } Użycie klasy StringTokenizer i Scaner import java.util.*; public class program { public static void main(String[] args) { String ciag_tekstowy="To jest tekst testowy"; StringTokenizer stroke = new StringTokenizer(ciag_tekstowy); while(stroke.hasMoreElements()) System.out.println(stroke.nextToken()); Scanner scanner =new Scanner(ciag_tekstowy); while(scanner.hasNext()) System.out.println(scanner.next()); }} Używanie separatorów wartości wejściowych import java.util.*; public class Main { public static void main(String argv[]){ Scanner scanner=new Scanner("1,2,3,4,5,6,7,8"); scanner.useDelimiter("\\s*,\\s*"); while(scanner.hasNext()) System.out.println(scanner.nextInt()); }} Program, który rozdzieli podany ciąg używając separatorów , oraz # import java.io.*; import java.util.*; public class program { static String nazwa="to,jest#ciag tekstowy"; public static void main(String[] args) throws Exception{ Scanner sc=new Scanner(nazwa); sc.useDelimiter(","); StringBuilder sb=new StringBuilder(); while(sc.hasNext()) { sb.append(sc.next()+" ");} Scanner sc1=new Scanner(sb.toString()); sc1.useDelimiter("#"); StringBuilder sb1=new StringBuilder(); while(sc1.hasNext()) { sb1.append(sc1.next()+" ");} System.out.println(sb1.toString()); }} Formatowanie wyjścia z użyciem metody format/printf import java.util.*; public class Main { public static void main(String argv[]){ int a=20; double b=34.12345678901; String ciag="dowolny tekst"; System.out.printf("a=%d \nb=%2.3f \nciąg znakowy= %s",a,b,ciag); }} Program, który pyta o podanie ciągu tekstowego, następnie dzieli wprowadzony ciąg na wyrazy import java.util.*; import java.io.*; public class program { public static void main(String[] args)throws Exception { InputStreamReader str = new InputStreamReader(System.in); BufferedReader buff = new BufferedReader(str); try{ System.out.print("Wprowadz ciąg:"); String linia = buff.readLine(); StringTokenizer stroke = new StringTokenizer(linia); while(stroke.hasMoreElements()) System.out.println(stroke.nextToken()); Scanner scanner =new Scanner(linia); while(scanner.hasNext()) System.out.println(scanner.next()); } catch (Exception e) {System.out.println("Wyjątek");}} } Zapis do pliku import java.io.*; public class program {static String nazwa="plik.txt"; public static void main(String[] args) throws Exception{ PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(nazwa))); String tekst="to jest ciąg tekstowy"; out.println(tekst); out.close(); }} Uproszczony zapis do pliku import java.io.*; public class program {static String nazwa="plik.txt"; public static void main(String[] args) throws Exception{ PrintWriter out=new PrintWriter(nazwa); String tekst="to jest ciąg tekstowy"; out.println(tekst); out.close(); }} Buforowany odczyt z pliku import java.io.*; public class program {static String nazwa="plik.txt"; public static void main(String[] args) throws IOException{ BufferedReader in=new BufferedReader(new FileReader(nazwa)); String s; StringBuilder sb=new StringBuilder(); while((s=in.readLine())!=null) sb.append(s+"\n"); in.close(); System.out.println(sb.toString());}} Zapis danych do pliku import java.io.*; public class program { static String nazwa="plik.txt"; public static void main(String[] args) throws IOException{ DataOutputStream out=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(nazwa))); out.writeDouble(3.14159); out.writeUTF("To była liczba PI"); out.writeDouble(1.41159); out.writeUTF("A to pierwiastek PI"); out.close();}} Odczyt danych z pliku import java.io.*; public class program { static String nazwa="plik.txt"; public static void main(String[] args) throws IOException{ DataInputStream in=new DataInputStream(new BufferedInputStream(new FileInputStream(nazwa))); System.out.println(in.readDouble()); System.out.println(in.readUTF()); System.out.println(in.readDouble()); System.out.println(in.readUTF());}} Kontenery import java.util.*; class Kwadrat { private static long licznik; private final long id = licznik++; private final double rozmiar; public long id() { return id; } public Kwadrat(double i){rozmiar=i;} public double getRozmiar(){return rozmiar;}} class Okrąg{} public class Main { public static void main(String[] args) { ArrayList<Kwadrat> Kwadraty = new ArrayList<Kwadrat>(); Kwadraty.add(new Kwadrat(23.34)); Kwadraty.add(new Kwadrat(22.33)); Kwadraty.add(new Kwadrat(11.23)); // Błąd kompilacji: // Kwadraty.add(new Okrąg()); for(int i = 0; i < Kwadraty.size(); i++) System.out.println("id="+Kwadraty.get(i).id()+" rozmiar="+Kwadraty.get(i).getRozmiar()); for(Kwadrat c : Kwadraty) System.out.println("id="+c.id()+" rozmiar="+c.getRozmiar()); }} Wypisywanie zawartości kontenerów import java.util.*; public class Main { static Collection generuj(Collection<String> kolekcja) { kolekcja.add("Czerwony"); kolekcja.add("Zielony"); kolekcja.add("Niebieski"); kolekcja.add("Niebieski"); return kolekcja; } static Map generuj(Map<String,String> mapa) { mapa.put("Czewony", "Ciemny"); mapa.put("Zielony", "Jasny"); mapa.put("Niebieski", "Jasny"); mapa.put("Niebieski", "Ciemny"); return mapa; } public static void main(String[] args) { System.out.println(generuj(new ArrayList<String>())); System.out.println(generuj(new LinkedList<String>())); System.out.println(generuj(new HashSet<String>())); System.out.println(generuj(new TreeSet<String>())); System.out.println(generuj(new LinkedHashSet<String>())); System.out.println(generuj(new HashMap<String,String>())); System.out.println(generuj(new TreeMap<String,String>())); System.out.println(generuj(new LinkedHashMap<String,String>())); }} Kontener ArrayList import java.util.*; public class Main { public static void main(String[] args) { Collection<Integer> c = new ArrayList<Integer>(); for(int i = 0; i < 10; i++) c.add(i); for(Integer i : c) System.out.print(i + ", "); }} Kontener LinkedList import java.util.*; public class Main { public static void main(String[] args) { Collection<Integer> c = new LinkedList<Integer>(); for(int i = 0; i < 10; i++) c.add(i); for(Integer i : c) System.out.print(i + ", "); }} Kontener HashSet import java.util.*; public class Main { public static void main(String[] args) { Collection<Integer> c = new HashSet<Integer>(); for(int i = 0; i < 10; i++) c.add(i); for(Integer i : c) System.out.print(i + ", "); }} Kontener TreeSet import java.util.*; public class Main { public static void main(String[] args) { Collection<Integer> c = new TreeSet<Integer>(); for(int i = 10; i >0; i--) c.add(i); for(Integer i : c) System.out.print(i + ", "); }} Interfejs iterator import java.util.*; public class Main {public static void main(String[] args) { ArrayList<String> k= new ArrayList <String>(); k.addAll(Arrays.asList("Poniedziałek,Wtorek,Środa,Czwartek,Piatek,Sobota ,Niedziela".split(","))); Iterator<String> biezacy=k.iterator(); while(biezacy.hasNext()) {String s=biezacy.next(); System.out.println(s);} // za pomocą for for(String t:k) System.out.println(t); //usuwanie pierwszego elementu biezacy=k.iterator(); biezacy.next(); biezacy.remove(); System.out.println(k); }} Interfejs listIterator import java.util.*; public class Main {public static void main(String[] args) { List<String> k=new ArrayList<String>(); k.addAll(Arrays.asList("Poniedziałek,Wtorek,Środa,Czwartek,Piatek,Sobota ,Niedziela".split(","))); ListIterator<String> biezacy= k.listIterator(); while(biezacy.hasNext()) {System.out.println(biezacy.next()+" "+biezacy.nextIndex()+" "+biezacy.previousIndex());} // przegladznie list wstecz while(biezacy.hasPrevious()) {System.out.println(biezacy.previous());} // zmiana wartości w liście biezacy=k.listIterator(3);biezacy.next(); biezacy.set("Thursday");System.out.println(k); }} Klasa Stos import java.util.*; class Stack<T> { private LinkedList<T> storage = new LinkedList<T>(); public void push(T v) { storage.addFirst(v); } public T peek() { return storage.getFirst(); } public T pop() { return storage.removeFirst(); } public boolean empty() { return storage.isEmpty(); } public String toString() { return storage.toString(); }} public class Main { public static void main(String[] args) { Stack<String> stack = new Stack<String>(); for(String s : "Mój pies ma pchły".split(" ")) stack.push(s); while(!stack.empty()) System.out.print(stack.pop() + " "); }} Interfejs Set import java.util.*; public class Main { public static void main(String[] args) { Random rand = new Random(47); Set<Integer> intset = new HashSet<Integer>(); for(int i = 0; i < 10000; i++) intset.add(rand.nextInt(30)); System.out.println(intset); }} Ilustracja użycia kontenera TreeSet import java.util.*; public class Main { public static void main(String[] args) { Random rand = new Random(47); SortedSet<Integer> intset = new TreeSet<Integer>(); for(int i = 0; i < 10000; i++) intset.add(rand.nextInt(30)); System.out.println(intset); }} Interfejs Map Interfejs Map pozwala na odwzorowanie obiektów na inne obiekty. Przykład ilustruje możliwość zliczania wystąpień poszczególnych wartości liczbowych generowanych przez funkcję random(); import java.util.*; public class Main { public static void main(String[] args) { Random rand = new Random(47); Map<Integer,Integer> m = new HashMap<Integer,Integer>(); for(int i = 0; i < 10000; i++) { // Losowanie liczby z zakresu od 0 do 20: int r = rand.nextInt(20); Integer freq = m.get(r); m.put(r, freq == null ? 1 : freq + 1); } System.out.println(m); }} Interfejs Queue Kolejka to kontener typu first-in, first-out (FIFO). Elementy w takiej strukturze są dodawana na końcu, a pobierane są z początku. import java.util.*; public class Main {public static void printQ(Queue queue) { // jesli istnieje element w kolejce to wyświetl jego wartość i usuń z kolejki while(queue.peek() != null) System.out.print(queue.remove() + " "); System.out.println(); } public static void main(String[] args) { Queue<Integer> queue = new LinkedList<Integer>(); // kolejka liczb całkowitych Random rand = new Random(47); for(int i = 0; i < 10; i++) queue.offer(rand.nextInt(i + 10)); //wstawianie elementu na koniec kolejki printQ(queue); // wyswietlenie kolejki z wartościami licz całkowitych Queue<Character> qc = new LinkedList<Character>(); // kolejka dla wartości znakowych for(char c : "Diplog".toCharArray()) qc.offer(c); //wsawienie elementów ciagu "Diplog" do kolejki printQ(qc); // wyświetlenie kolejki ze znakami }} Program umieszcza w kolekcji typu ArrayList imiona i nazwiska, następnie posortuje osoby wg nazwiska. package sortowanie_arraylist; import java.util.*; class obiekty{ String pole1; String pole2; obiekty(String pole1, String pole2) { this.pole1 = pole1; this.pole2 = pole2; }} class comparator implements Comparator<obiekty>{ public int compare(obiekty o1, obiekty o2) { return o1.pole2.compareTo(o2.pole2);}} public class Main {public static void main(String[] args) { List<obiekty> lista = new ArrayList<obiekty>(); lista.add(new obiekty("James","Bond")); lista.add(new obiekty("Baltazar","Gąbka")); lista.add(new obiekty("Kaczor","Donald")); lista.add(new obiekty("Tytus","deZoo")); lista.add(new obiekty ("Szyszkownik","Klikujadek")); lista.add(new obiekty("Austin","Powers")); lista.add(new obiekty("Frank","Drebin")); System.out.println("Lista imion i nazwisk:"); for (Iterator<obiekty> iterator = lista.iterator(); iterator.hasNext();) { obiekty obiekt = (obiekty) iterator.next(); System.out.println(obiekt.pole2+" "+obiekt.pole1); } System.out.println("Lista imion i nazwisk posortowanych wg. nazwiska:"); Collections.sort( lista, new comparator()); for (Iterator<obiekty> iterator = lista.iterator(); iterator.hasNext();) { obiekty obiekt = (obiekty) iterator.next(); System.out.println(obiekt.pole2+" "+obiekt.pole1); }}}