Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. import java.io.RandomAccessFile;
  2. import java.io.IOException;
  3. public class NewMain {
  4.  
  5.  
  6.  
  7. public static String wyszukaj(String sciezka) throws IOException {
  8. RandomAccessFile raf = new RandomAccessFile(sciezka,"rw");
  9. ///wizualizacja pliku
  10. raf.writeUTF("Adam");
  11. raf.writeUTF("Adamowski");
  12. raf.writeDouble(0);
  13. raf.writeDouble(3500);
  14. raf.writeInt(20);
  15.  
  16. raf.writeUTF("Bartek");
  17. raf.writeUTF("Bartkowski");
  18. raf.writeDouble(0);
  19. raf.writeDouble(7000);
  20. raf.writeInt(25);
  21.  
  22. raf.writeUTF("Kacper");
  23. raf.writeUTF("Kacperowski");
  24. raf.writeDouble(0);
  25. raf.writeDouble(1800);
  26. raf.writeInt(37);
  27. raf.seek(0);
  28. ///////////////////////////////////////////////
  29. String dane=""; //imie i nazwisko pojedynczej osoby
  30. double kredyt=0; // kredyt pojedynczej osoby
  31. double pensja=0; // pensja pojedynczej osoby
  32. int wiek=0; // wiek pojedynczej osoby
  33.  
  34.  
  35. double max_kredyt=0; //maksymalny kredyt jaki pojawil sie w pliku
  36. String osoba=""; //Imie i nazwisko osoby o najwiekszym kredycie jaki pojawil sie w pliku
  37. while(raf.getFilePointer()<raf.length())
  38. {
  39. dane=raf.readUTF(); //seek=x x - dlugosc stringa
  40. dane+=raf.readUTF(); //seek=x+y y - dlugosc kolejnego stringa
  41. raf.readDouble(); //seek=x+y +8 (double)
  42. pensja=raf.readDouble(); //seek= x+y+8 +8 (double)
  43. wiek=raf.readInt(); //seek= x+y+8+8 +4 (int)
  44.  
  45. kredyt=(pensja/7)*(65-wiek);
  46.  
  47. raf.seek(raf.getFilePointer()-Double.BYTES-Double.BYTES-Integer.BYTES); // przesuwamy sie przed bajty kredytu czyli omijamy 2*double i 1*int || seek= poprz. wartosc -8 -8 -4
  48.  
  49. raf.writeDouble(kredyt); //zapisujemy obliczony kredyt na jego miejscu || seek=poprz. wartosc +8 (double)
  50.  
  51. raf.seek(raf.getFilePointer()+Double.BYTES+Integer.BYTES); //przesuwamy sie znowu na sam koniec "piatki" danych zeby kolejne przejscie petli moglo zaczac od kolejnego imienia i nazwiska UWAGA: tym razem przesuwamy sie tylko o double i int bo sam zapis double nas przesunal o jego wartosc(8) bajtow || seek= poprz. wartosc +8 +4
  52.  
  53. if(max_kredyt<kredyt){ //sprawdzamy czy analizowana osoba ma wieksza pensje niz najwieksza dotychczas a jesli tak to zapisujemy jej wartosc oraz imie i nazwisko
  54. max_kredyt=kredyt;
  55. osoba=dane;
  56. }
  57.  
  58. }
  59. raf.close();
  60. return osoba;
  61. }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement