Föreläsning 13 Programmeringsteknik och Matlab 2D1312/2D1305 •Inläsning från fil •Skriva till fil •StringTokenizer •Sortering SimpleTextFileReader // Öppna fil för läsning SimpleTextFileReader in = new SimpleTextFileReader(”infil.txt”); String str; // Läs in alla rader och skriv ut på skärmen while ((str = in.readLine())!= null) { System.out.println(str); } in.close(); Läsning från fil till java objekt Exempel: Vi har en fil där står information om några familjer. mamma, pappa och alla deras barn. Filen kan se så här ut: Vårt program ska läsa in filen Till en ArrayList (eller array) som Family objekter. Dahlin Anders Rita David Mosavat Vahid Azi Pettersson Pelle Cathrine Johan Sara …osv …fortsättning Filens riktiga innehåll egentligen är: Dahlin\nAnders\nRita\nDavid\n\nMosavat\nVahid\nAzi\n\nPettersson\nPelle\nCathrine\nJohan\nSara\n… Vi ser ´\n´ som en radbyte. Varje gång metoden readLine() anropas för filen ovan så returneras en text mellan två ’\n’ StringTokenizer I föregående example hade vi ”\n” som märkerade nästa person och nästa familj Hur gör man då om filen inte innehåller ”\n” för Dahlin@Anders@Rita@David att markera nästa person, Mosavat@Vahid@Azi Pettersson@Pelle@Chathrine@Johan@S anta att filen ser så här ut: ara …osv Hur ser den egentliga formaten av filen? SimpleTextFileWriter // Öpnna fil för utskrift SimpleTextFileWriter out = new SimpleTextFileWriter (”utfil.txt”); out.println(”Detta skrivs på filen!”); System.out.println(”Detta på skärmen”); // Stäng filen out.close(); Sökning För att söka efter ett element i en vektor (array) så kan man använda sig av en slinga som kontrollerar varje element i vektorn. public class Sök{ public static void main(String[] args){ int[] iarr={12,11,13,7,6,8,5}; for(int i=0;i<iarr.length;i++){ if(iarr[i]== 5){ System.out.println(”finns i plats ”+i); return; } } System.out.println(”finns inte”); } } Sortering Anta att vi vill sortera en array av tal så att den största kommer först: Skriv ett program som läser in ett antal tal och skriver ut de sorterade. Tips : använd två slingor i varandra Sortering public class Sort{ public static void main(String[] args){ Scanner tgb=new Scanner(System.in); int[] iarr=new int [10]; for(int i=0;i<iarr.length-1;i++){ System.out.print(”Mata in ett tal:”); iarr[i]=tgb.nextInt(); } for(int i=0;i<iarr.length-1;i++){ for(int j=i+1;j<iarr.length;j++){ if(iarr[i]<iarr[j]){ int tmp=iarr[i]; iarr[i]=iarr[j]; iarr[j]=tmp; } } } for(int k=0;k<iarr.length;k++) System.out.println(iarr[k]); } }