Tangentbord.java import java.io.*; class Tangentbord public static void main(string[] args) throws IOException BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Skriv text. Avsluta med att på en blankrad cka control+z (c) (på pc) eller control+d (unix)"); String rad = in.readline(); while (rad!= null) //sant så länge som strängen inte är null, man inte har matat in ctrl+c System.out.println(rad); //skriver ut den inlästa textsträngen rad = in.readline(); Talinlasning.java import java.io.*; /*Detta program läser in ett heltal och ett decimaltal. Det har dock ingen felhantering vilket medför att felaktiga värden leder till exekveringsavbrott*/ class Talinlasning public static void main(string[] args)throws IOException BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Skriv in ett heltal: "); String text = in.readline(); //läser in en text från tangentbordet int tal = Integer.parseInt(text); //omvandlar texten till ett heltal. //Om texten inte är ett heltal kraschar programmet System.out.println("Du skrev: " + tal); System.out.println("Skriv in ett decimaltal. OBS använd punkt "); text=in.readline(); double decimaltal = Double.parseDouble(text); System.out.println("Du skrev: " + decimaltal);
TalinlasningFelhantering.java import java.io.*; class TalinlasningFelhantering /**Detta program tillåter inläsning av ett heltal och ett flyttal. Denna version har felhantering som tar hand om felaktiga inmatningar och skriver ut lämpligt felmeddelande.*/ public static void main(string[] args) throws IOException BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Skriv in ett heltal."); String rad = in.readline(); //läser en textrad från tangentbordet. int tal = 0; //Try-sats för att fånga NumberFormatException som kan uppstå vid felaktig inmatning tal = Integer.parseInt(rad); //omvandlar textsträngen till ett heltal. System.out.println("Du skrev: " + tal); //denna sats utförs endsast om inget fel uppstod catch (NumberFormatException e) //Fångar upp exception //här hamnar exekveringen om en felaktig datatyp matades in och ett exception uppstod. System.out.println("Du angav felaktig datatyp."); System.out.println("Skriv in ett decimaltal. OBS använd punkt istället för komma"); rad = in.readline(); double decimaltal = 0.0; decimaltal = Double.parseDouble(rad);//omvandlar textsträngen till ett decimaltal System.out.println("Du skrev: " + decimaltal); //dessa satser utförs endsast om inget fel uppstod catch (NumberFormatException e) //här hamnar exekveringen om en felaktig datatyp matades in och ett exception uppstod. System.out.println("Du angav felaktig datatyp."); IOExempel_1.java /* * Programmet är ett minimalt exempel på hur data kan läsas från en textfil, rad * för rad. * */
import java.io.bufferedreader; import java.io.filenotfoundexception; import java.io.filereader; import java.io.ioexception; public class IOExempel_1 public static void main(string[] args)throws IOException BufferedReader in; FileReader freader = null; String textrad; freader = new FileReader("infil.txt"); catch (FileNotFoundException e) System.out.println("Filen hittades inte. Programmet avslutas."); in = new BufferedReader(fReader); while ((textrad = in.readline())!= null) System.out.println(textRad); catch (IOException e1) System.out.println("Problem uppstod vid läsning av filen. Programmet avslutas."); IOExempel_2.java import java.io.*; public class IOExempel_2 public static void main(string[] args)throws IOExcpetion PrintWriter ut; FileWriter fwriter;
String[] namn; namn = new String[5]; namn[0]="jonas"; namn[1]="lotta"; namn[2]="kalle"; namn[3]="lisa"; namn[4]="pelle"; fwriter = new FileWriter("utfil.txt"); ut = new PrintWriter(fWriter); for(int i=0;i<namn.length;i++) ut.println(namn[i]); ut.close(); catch (IOException e) System.out.println("Problem uppstod vid filhanteringen."); PelletsExempel.java import java.io.bufferedreader; import java.io.filereader; import java.io.ioexception; class PelletsExempel public static void main(string[] args) // Programmet inleds med deklarationer och initiering // av array och variabler int[] pellets = new int[1000]; int summa=0; int antal=0; float medelvarde=0.0f; BufferedReader in; FileReader freader = new FileReader("pelletsvikter.txt"); in = new BufferedReader(fReader); String line; while ((line = in.readline())!=null)
pellets[antal]=integer.parseint(line); antal++; catch (IOException e) System.out.println("Problem vid filhantering."); // Summan och medelvärdet beräknas for (int i=0; i < antal;i++) summa += pellets[i]; medelvarde = (float)summa / antal; // Medelvärdet skrivs därefter ut System.out.println("Antal pellets: " + antal); System.out.println("Medelvikt: " + medelvarde); Produkt.java class Produkt private String namn; private int pnummer; private int pris; public Produkt() public Produkt(String init_namn, int init_nummer, int init_pris) namn = init_namn; pnummer = init_nummer; pris = init_pris; public String getnamn() return namn; public void setnamn(string nytt_namn) namn = nytt_namn;
public int getpnummer() return pnummer; public void setpnummer(int nytt_nummer) pnummer = nytt_nummer; public int getpris() return pris; public void setpris(int nytt_pris) pris = nytt_pris; ProduktRegister.java import java.io.*; public class ProduktRegister private Produkt[] prodarray; private int antalprodukter; public ProduktRegister(int maxantal) prodarray = new Produkt[maxAntal]; antalprodukter = 0; public void addprodukt(produkt p) prodarray[antalprodukter] = p; antalprodukter++; public Produkt getprodukt(int index) return prodarray[index]; public int getantalprodukter() return antalprodukter;
public void franfil(string filnamn) BufferedReader in; FileReader freader; freader = new FileReader(filNamn); in = new BufferedReader(fReader); String line; while ((line = in.readline())!=null) Produkt p = new Produkt(); p.setnamn(line); line = in.readline(); p.setpnummer(integer.parseint(line)); line = in.readline(); p.setpris(integer.parseint(line)); this.addprodukt(p); catch (IOException e) System.out.println("Problem uppstod vid filhanteringen."); public void tillfil(string filnamn) PrintWriter ut; FileWriter fwriter; fwriter = new FileWriter(filNamn); ut = new PrintWriter(fWriter); for (int i = 0; i < antalprodukter; i++) Produkt p = this.getprodukt(i); ut.println(p.getnamn()); ut.println(integer.tostring(p.getpnummer())); ut.println(integer.tostring(p.getpris())); ut.close(); catch (IOException e) System.out.println("Problem uppstod vid filhanteringen.");
ProduktApp.java public class ProduktApp public static void main(string[] args) ProduktRegister preg = new ProduktRegister(100); preg.franfil("produktdata.txt"); System.out.println("Antal produkter: " + preg.getantalprodukter());; Produkt p = new Produkt(); p.setnamn("pda"); p.setpnummer(123456); p.setpris(5230); preg.addprodukt(p); preg.tillfil("prod.txt"); Textfilsvisare.java import java.io.*; //import av paket io class Textfilsvisare /** Textfilsvisare läser en textfil och skriver ut den på skärmen.*/ private String filnamn; //namnet på filen som skall läsas. private BufferedReader infil; //Inström som representerar filen som skall läsas. private boolean oppnat = false; //används för att kolla om man har öppnat filen eller ej. /** String filnamn är namnet på den fil som skall läsas.*/ public Textfilsvisare(String init_filnamn) //konstruktor filnamn = init_filnamn; public void oppnafilen() infil = new BufferedReader(new FileReader(filnamn)); //filen öppnas oppnat = true; //logisk flagga som sätts till sann om filen kunde öppnas. catch (FileNotFoundException e)
public void lasfilen() throws IOException if (oppnat)//sann om filen kunde öppnas. Hindrar att metoderna används i fel ordning. String s = infil.readline(); //läser en textsträng ifrån textfilen while (s!= null) //sant så länge som strängen inte är null System.out.println(s); //Skriver ut textsträngen till bildskärmen. s = infil.readline(); else StartTextfilsvisare.java import java.io.*; //import av paket io class StartTextfilsvisare /** Start har till enda uppgift att läsa in ett kommandradsargument, nämligen namnet på den textfil som skall läsas, skapa ett Textfilsvisarobjekt och anropa dess operationer.*/ public static void main(string[] args) throws IOException if (args.length == 1)//sann om det finns ett argument på kommandoraden = filnamnet Textfilsvisare tfs = new Textfilsvisare(args[0]); //skapar ett Textfilsvisareobjekt tfs.oppnafilen(); //anropar oppnafilen-operationen tfs.lasfilen(); //anropar lasfilen-operationen else System.out.println("Du angav inget filnamn. Programmet avslutas."); System.exit(0); Övningsuppgifter 1. Skriv om programmet TalinlasningFelhantering så att det vid felaktigt dataformat ber användaren
mata in ett nytt tal till dess att ett riktigt dataformat matats in. 2. a) Skriv ett program som kopierar en textfil. Namn på originalfilen och kopiafilen ska anges av användaren. Om originalfilen inte kan hittas skall ett felmeddelande skrivas ut. b) Modifiera programmet från övning 2 a så att det inte kräver inmatning av namnet på kopiafilen, istället ska namnet på kopian bli namnet av original med strängen kopia_av_ före. Exempelvis ska filen mintext.txt bli kopia_av_mintext.txt. 3. Skriv ett program som tar två textfiler som indata och slår samman dessa till en fil. Exempel Indatafil1 Indatafil2 Utdata Här börjar berättelsen. Den är inte så lång. Här kommer fortsättningen. Den var inte heller så lång. Här börjar berättelsen. Den är inte så lång. Här kommer fortsättningen. Den var inte heller så lång. 4. Nedanstående program har ett logiskt fel. Vid exekvering kraschar programmet och ger ett felmeddelande. Din uppgift är att hitta detta fel och rätta till det, vilket kan göras med eller utan användning av undantagshantering. Gör en lösning där du utnyttjar undantagshantering och en där du inte utnyttjar undantagshantering. class Luckor public static void main(string[] args) String[] text = "ett", "två", "tre", "fyra", "fem"; text[3] = null; for(int i =0; i<text.length; i++) System.out.println(text[i] + "\t" + text[i].length()); 5. Gör om något av de tidigare objektorienterade programmen under kursen (tex elevprogrammet eller artikelprogrammet) så att det sparar data om objekten i en fil.