Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.RandomAccessFile;
- import java.io.IOException;
- public class NewMain {
- public static String wyszukaj(String sciezka) throws IOException {
- RandomAccessFile raf = new RandomAccessFile(sciezka,"rw");
- ///wizualizacja pliku
- raf.writeUTF("Adam");
- raf.writeUTF("Adamowski");
- raf.writeDouble(0);
- raf.writeDouble(3500);
- raf.writeInt(20);
- raf.writeUTF("Bartek");
- raf.writeUTF("Bartkowski");
- raf.writeDouble(0);
- raf.writeDouble(7000);
- raf.writeInt(25);
- raf.writeUTF("Kacper");
- raf.writeUTF("Kacperowski");
- raf.writeDouble(0);
- raf.writeDouble(1800);
- raf.writeInt(37);
- raf.seek(0);
- ///////////////////////////////////////////////
- String dane=""; //imie i nazwisko pojedynczej osoby
- double kredyt=0; // kredyt pojedynczej osoby
- double pensja=0; // pensja pojedynczej osoby
- int wiek=0; // wiek pojedynczej osoby
- double max_kredyt=0; //maksymalny kredyt jaki pojawil sie w pliku
- String osoba=""; //Imie i nazwisko osoby o najwiekszym kredycie jaki pojawil sie w pliku
- while(raf.getFilePointer()<raf.length())
- {
- dane=raf.readUTF(); //seek=x x - dlugosc stringa
- dane+=raf.readUTF(); //seek=x+y y - dlugosc kolejnego stringa
- raf.readDouble(); //seek=x+y +8 (double)
- pensja=raf.readDouble(); //seek= x+y+8 +8 (double)
- wiek=raf.readInt(); //seek= x+y+8+8 +4 (int)
- kredyt=(pensja/7)*(65-wiek);
- 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
- raf.writeDouble(kredyt); //zapisujemy obliczony kredyt na jego miejscu || seek=poprz. wartosc +8 (double)
- 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
- 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
- max_kredyt=kredyt;
- osoba=dane;
- }
- }
- raf.close();
- return osoba;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement