Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package egzamin2019a1;
- import java.io.IOException;
- import java.io.RandomAccessFile;
- public class Egzamin2019A1
- {
- public static void main(String[] args)
- {
- }
- static int obliczZamowienie(String nazwaPliku, String nazwaTowaru)
- {
- //deklaujemy wszystkie potrzebne zmienne
- String nazwaTowaruZPliku;
- int nrZamowienia, liczbaSztuk, cenaPoRabacie, liczbaSztukPoszukiwanegoTowaru = -1;
- double cena;
- long wskaznikPrzed, wskaznikPo;
- //tworzymy wylapywanie wyjatkow
- try(RandomAccessFile raf = new RandomAccessFile(nazwaPliku, "rw");) //otwieramy w bloku try plik danych
- {
- while(raf.getFilePointer() < raf.length()) //czytamy caly plik, dopoki wartosc wskaznika jest mniejsza niz dlugosc pliku
- {
- nrZamowienia = raf.readInt();
- nazwaTowaruZPliku = raf.readUTF();
- wskaznikPrzed = raf.getFilePointer();// miejsce do którego wrócimy by nadpisac cene jezeli bedzie rabat
- cena = raf.readDouble();
- liczbaSztuk = raf.readInt();
- wskaznikPo = raf.getFilePointer(); //po nadpisaniu ceny wracamy tutaj zeby odpowiednio ustawic pointer, aby przy nastepnym przejsciu petli odczytac paawidłowo 4 kolejne elementy
- if(nazwaTowaruZPliku == nazwaTowaru)//jezeli ten towar jest tym szukamym (nazwa przeslana jako drugi argument funkcji)
- liczbaSztukPoszukiwanegoTowaru = liczbaSztuk;
- if(cena > 50 && liczbaSztuk >= 25) //jezeli drozsze od 50 i zamowiono chociaz 25 szt.
- {
- cenaPoRabacie = (int)(cena - cena*0.10);//okreslamy rabat
- raf.seek(wskaznikPrzed); //idziemy przed cene zeby ja nadpisac
- raf.writeInt(cenaPoRabacie);
- raf.seek(wskaznikPo);//idziemy za ostatni z czterech elementow
- }
- }
- }
- catch(IOException e)
- {
- System.out.println(e.getMessage());
- }
- return liczbaSztukPoszukiwanegoTowaru;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement