Föreläsning 13 Programmeringsteknik och Matlab 2D1312/2D1305

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]);
}
}