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); }}}

Podobne dokumenty