java8.pdf

(54 KB) Pobierz
Strumienie
Java – operacje wejścia - wyjścia
Strumienie
W Javie do przekazywania danych używa się modelu strumieni danych. Strumień
(stream) jest sekwencją danych, zwykle bajtów. Pochodzenie i typ sekwencji zależy
od danego środowiska. Podstawowe, często używane typy strumieni to te związane
z operacjami wprowadzania danych do programu (operacje wejścia) i ich wyprowadzania
(operacje wyjścia). W Javie do obsługi operacji wejścia stworzono klasę InputStream
a do obsługi operacji wyjścia do życia powołano OutputStream . Strumień związany jest
również z typem obszaru (urządzenia) z/do którego sekwencja danych przepływa oraz
typem danych. Podstawowe obszary (urządzenia) to np. pamięć operacyjna, dyski (pliki),
sieć, drukarka, ekran, itp. Typy danych jakie mogą być wykorzystywane przy przesyłaniu
danych to np. byte, String, Object, itp.
Klasy OutputStream oraz InputStream reprezentują strumienie jako sekwencje
bajtów, czyli elementów typu byte. Często jednak zachodzi potrzeba formatowania
danych strumienia. Można to wykonać w Javie korzystając z różnych klas formatujących
dziedziczących z OutputStream i InputStream. Wraz z rozwojem Javy wzbogacono ją
w klasy analogiczne do InputStream i OutputStream, a mianowicie klasy Reader
i Writer , które zostały przygotowane specjalnie do obsługi danych tekstowych (String).
Ćwiczenie 1:
Program odczytujący do tablicy bajtów znaki z klawiatury i wypisujący je na ekranie.
Tablica bajtów w niniejszym ćwiczeniu przechowuje 100 elementów.
import java.io.*;
class cwicz1 {
public static void main(String args[]) throws IOException {
byte data[] = new byte[100]; //deklaracja i inicjacja tablicy bajtów
System.out.println("Podaj znaki z klawiatury, pierwsze 100 zostanie
zczytane:");
System.in.read(data); // Odczyt tablicy bajtów z klawiatury
System.out.print("Wprowadzono znaki:");
for (int i=0; i<data.length; i++)
System.out.print((char) data[i]); //pętla wypisująca zawartość
tablicy
System.out.println(' ');//”enter”po wypisaniu tablicy
}
}
1
Java – operacje wejścia - wyjścia
Ćwiczenie 2:
Program korzystający z klasy Reader. Użytkownik podaje ciąg znaków – liter i cyfr, a
program dzieli je na cyfry i litery.
import java.io.*;
class cwiczenie2 {
public static void main(String args[]) {
byte[] literki = new byte[1024];
int i=0;
byte[] cyferki = new byte[1024];
int j=0;
char[] c = new char[1];
BufferedReader bufor=new BufferedReader(new
InputStreamReader(System.in));
do
{
try {
bufor.read(c,0,1);
if (Character.isDigit(c[0])) cyferki[i++]=(byte)c[0];//czy liczba?
if (Character.isLetter(c[0])) literki[j++]=(byte)c[0];//czy litera?
}
catch(IOException e)
{}
}
while(c[0]!=' ');//dopóki wpisane znaki sa rozne od ' 'to zczytuj
cyferki[i++]=(byte)'\n';//na koniec enter
literki[j++]=(byte)'\n';
System.out.write( liczby, 0, i );//opcja write wypisuje:(string,od pola,dlugosc)
System.out.write( litery, 0, j );
System.out.println();
}
}
2
Java – operacje wejścia - wyjścia
Klasa StreamTokenizer
Klasa ta dzieli strumień tekstowy na leksemy, co umożliwia wykrywanie elementów
strumienia i umieszczania ich w tablicy. Pobranie kolejnego leksemu z tablicy odbywa się
za pomocą metody nextToken() .
Ćwiczenie 3:
Program wykorzystujący działania na wartościach podanych przez użytkownika i
zczytanych za pomocą klasy StreamTokenizer
import java.io.*;
public class cwiczenie3{
public static void main(String args[])
{
int a=12, b=3;
double wyn1, wyn2, wyn3;
Reader rd = new BufferedReader(new InputStreamReader(System.in));
StreamTokenizer st = new StreamTokenizer(rd);
try{
System.out.println("Podaj dwie liczby");
st.nextToken();
a= (int) st.nval;//przypisanie zmiennej a wartości leksemu (o ile to możliwe)
st.nextToken();
b= (int) st.nval;
wyn1= a+b;
wyn2= a-b;
wyn3= a/b;
System.out.println(a+"+"+b+"= "+wyn1);
System.out.println(a+"-"+b+"= "+wyn2);
System.out.println(a+"/"+b+"= "+wyn3);
System.out.println(" ");
}
catch (IOException e){
System.out.println("ERROR!!!!!");
}
}
}
3
Java – operacje wejścia - wyjścia
Ćwiczenie 4:
Proszę napisać program korzystający z klasy StreamTokenizer i wykonujący program
prostego kalkulatora. Użytkownik podaje dwie liczby i wybiera działanie, jakie chce na
nich wykonać. Program zwraca wynik.
Ćwiczenie 5:
Proszę napisać program obliczający objętość prostopadłościanu. Wymiary
prostopadłościanu podaje użytkownik.
Ćwiczenie 6:
Proszę napisać program wyznaczający potęgę liczby. Użytkownik podaje podstawę
i wykładnik potęgi.
Ćwiczenie 7:
Napisać program rozwiązujący równanie kwadratowe.
Ćwiczenie 8:
Napisać aplikację wyznaczającą Największy Wspólny Dzielnik dwóch liczb całkowitych
stosując
algorytm Euklidesa.
Ćwiczenie 9:
Napisać aplikację sortującą tablicę jednowymiarową 10-io elementową przechowującą
wartości całkowite w porządku wybranym przez użytkownika. Elementy tablicy również
są podawane przez użytkownika.
Ćwiczenie 10:
Napisać aplikację wyznaczającą pierwiastek z liczby podanej przez użytkownika
z dokładnością podaną przez użytkownika.
Ćwiczenie 11:
Napisać aplikację wyznaczającą wybrany przez użytkownika wyraz ciągu Fibonacci’ego.
4
Zgłoś jeśli naruszono regulamin