Advertisement
Nakumas

Egzamin PP&JP: ????, Zad.2 A

Feb 22nd, 2019
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.04 KB | None | 0 0
  1. package egzamin2019a2;
  2.  
  3. import java.io.IOException;
  4. import java.io.RandomAccessFile;
  5.  
  6. public class Egzamin2019A2
  7. {
  8.     public static void main(String[] args)
  9.     {
  10.        
  11.     }
  12.    
  13.     static int przeliczZamowienie(String nazwaPliku, String nazwaTowaru)
  14.     {
  15.         //deklaujemy wszystkie potrzebne zmienne
  16.         String nazwaTowaruZPliku;
  17.         int cena, liczbaSztuk, liczaSztukPoszukiwanegoTowaru = -1, cenaPoRabacie;
  18.         long wskaznikPrzed, wskaznikPo;
  19.         //tworzymy wylapywanie wyjatkow
  20.         try(RandomAccessFile raf = new RandomAccessFile(nazwaPliku, "rw");) //otwieramy w bloku try plik danych
  21.         {
  22.             while(raf.getFilePointer() < raf.length()) //czytamy caly plik, dopoki wartosc wskaznika jest mniejsza niz dlugosc pliku
  23.             {
  24.                 nazwaTowaruZPliku = raf.readUTF();
  25.                 wskaznikPrzed = raf.getFilePointer();// miejsce do którego wrócimy by nadpisac cene jezeli bedzie rabat
  26.                 cena = raf.readInt();
  27.                 liczbaSztuk = raf.readInt();
  28.                 wskaznikPo = raf.getFilePointer(); //po nadpisaniu ceny wracamy tutaj zeby odpowiednio ustawic pointer, aby przy nastepnym przejsciu petli odczytac paawidłowo 3 kolejne elementy
  29.                
  30.                 if(nazwaTowaruZPliku == nazwaTowaru)//jezeli ten towar jest tym szukamym (nazwa przeslana jako drugi argument funkcji)
  31.                     liczaSztukPoszukiwanegoTowaru = liczbaSztuk;
  32.                 if(liczbaSztuk >= 250) //jezeli liczba sztuk towaru to przynajmniej 250
  33.                 {
  34.                     cenaPoRabacie = (int)(cena - cena*0.10);//okreslamy rabat
  35.                     raf.seek(wskaznikPrzed); //idziemy przed cene zeby ja nadpisac
  36.                     raf.writeInt(cenaPoRabacie);
  37.                     raf.seek(wskaznikPo);//idziemy za ostatni z 3 elementow
  38.                 }
  39.             }
  40.            
  41.         }
  42.         catch(IOException e)
  43.         {
  44.             System.out.println(e.getMessage());
  45.         }
  46.         return liczaSztukPoszukiwanegoTowaru;
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement