Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package egzamin2019a2;
- import java.io.IOException;
- import java.io.RandomAccessFile;
- public class Egzamin2019A2
- {
- public static void main(String[] args)
- {
- }
- static int przeliczZamowienie(String nazwaPliku, String nazwaTowaru)
- {
- //deklaujemy wszystkie potrzebne zmienne
- String nazwaTowaruZPliku;
- int cena, liczbaSztuk, liczaSztukPoszukiwanegoTowaru = -1, cenaPoRabacie;
- 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
- {
- nazwaTowaruZPliku = raf.readUTF();
- wskaznikPrzed = raf.getFilePointer();// miejsce do którego wrócimy by nadpisac cene jezeli bedzie rabat
- cena = raf.readInt();
- liczbaSztuk = raf.readInt();
- wskaznikPo = raf.getFilePointer(); //po nadpisaniu ceny wracamy tutaj zeby odpowiednio ustawic pointer, aby przy nastepnym przejsciu petli odczytac paawidłowo 3 kolejne elementy
- if(nazwaTowaruZPliku == nazwaTowaru)//jezeli ten towar jest tym szukamym (nazwa przeslana jako drugi argument funkcji)
- liczaSztukPoszukiwanegoTowaru = liczbaSztuk;
- if(liczbaSztuk >= 250) //jezeli liczba sztuk towaru to przynajmniej 250
- {
- 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 3 elementow
- }
- }
- }
- catch(IOException e)
- {
- System.out.println(e.getMessage());
- }
- return liczaSztukPoszukiwanegoTowaru;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement