Lektion 1, del b Utskrifter av variabelvärden Inläsning av värden till variabler Denna lektion tar upp Utskrifter: Utskrift av variabelvärden på skärmen i DrJavas Interaktions-fönster eller i ett Popup-fönster Inläsning: Inläsning av värden till variabler via DrJavas Interaktionsfönster (terminalfönster) eller via ett Popupfönster Lektion 1, del b - Utskrifter och Inläsning 1 i Java
Snyggare utskrifter av variabelvärden Utskrifter med förklarande text kan göras på följande sätt: I Interactions Pane I ett popup-fönster Exempel, vi beräknar och skriver ut saldot efter 1 års ränta. double saldo=10000.50; double räntesats=0.015; double ränta; ränta = saldo*räntesats; saldo = saldo + ränta; +-tecknet separerar brödtext och variabler System.out.println("Saldot på ditt konto är nu " + saldo); En brödtext som skrivs ut En variabel, vars värde skrivs ut Utskriften i Interactions Pane blir: Testa detta! Saldot på ditt konto är nu 10150.5075 Lektion 1, del b - Utskrifter och Inläsning 2 i Java
Snyggare utskrifter av variabelvärden För att göra en utskrift i ett sk. popup-fönster måste vi först tala om för Java att hämta (importera) ett javabibliotek som innehåller program för att hantera bl.a. popupfönster. Vi skriver följande sats i Interactions. import javax.swing.*; Därefter skriva ut på följande sätt: null betyder att fönstret inte ingår i något annat fönster. JOptionPane.showMessageDialog(null, "Saldot på ditt konto är nu " + saldo); Resultatet blir att följande visas på skärmen: En brödtext som skrivs ut Värdet på variabeln saldo skrivs ut Lektion 1, del b - Utskrifter och Inläsning 3 i Java
Inläsning av värden via tangentbordet När man skriver in saker (tecken) via tangentbordet kommer det generera en s.k. ström av tecken som normalt avslutas med tecknet ENTER/RETURN. I Java läser man denna ström genom att scanna tecken för tecken och tolka dem som värden: t.ex. heltal, flyttal eller sträng. Vi tar upp två olika sätt för inläsning: Inläsning via terminalfönstret (DrJava s interaktionsfönster) med Scanner-klassen Inläsning via popup-fönster med Joptionpane-klassen Lektion 1, del b - Utskrifter och Inläsning 4 i Java
1. Inläsning med Scanner Först måste ett bibliotek importeras import java.util.scanner; Sedan måste man sätta ett logiskt namn på den s.k. scannern som skall tolka strömmen av tecken som kommer från tangentbordet. Vi döper scannern till scan. Strömmen av tecken från tangentbordet heter System.in. Scanner scan = new Scanner(System.in); Vi är nu redo att göra inläsningar i java Lektion 1, del b - Utskrifter och Inläsning 5 i Java
Att läsa in heltalsvärden Testa följande: int tal; tal = scan.nextint(); I Interactions dyker det upp ett rör och ett timglas som indikerar att java väntar på att ni knappar in tecken via tangentbordet och avslutar med ENTER/RETURN. Så här kan det se ut i Interactions: 14<ENTER> I och med att ni skrev nextint() kommer java att tolka tecknen 14 som ett heltal och lagra värdet i variabeln tal. Skriv ut värdet på variabeln tal för att se att den fick rätt värde. Lektion 1, del b - Utskrifter och Inläsning 6 i Java
Att läsa in flyttalsvärden För att läsa in ett flyttals-värde kan man scanna med nextdouble(). Vid inläsning av flyttal måste vi ange decimalpunkten med ett kommatecken och inte en punkt som vi gör vid direkt tilldelning av värde i javaspråket (t.ex. double x=1.4). Gör följande: double ftal; ftal = scan.nextdouble(); Knappa in ett flyttal följt av ENTER. Exempelvis: 1,4<ENTER> Skriv ut värdet på variabeln ftal för att se att den fick rätt värde. Lektion 1, del b - Utskrifter och Inläsning 7 i Java
Nu skall ni strax se hur man läser in strängar Men, först måste ni ta bort det ENTER-tecken som ligger kvar från strömmen av tecken när ni nyss läste in: 1,4<ENTER> Annars kommer det tecknet att ställa till lite trassel när ni skall läsa in en sträng. Ni tar bort ENTER-tecknet med: scan.nextline(); Nu kan ni gå till nästa sida Lektion 1, del b - Utskrifter och Inläsning 8 i Java
Inläsning av en hel rad som en sträng Man scannar med nextline(). Gör följande: String s1; s1 = scan.nextline(); Mata in ditt förnamn och efternamn följt av ENTER. Ex.vis: Kim Nilsdotter<ENTER> Skriv sedan ut värdet på variabeln s1 för att se att den fick rätt värde. Lektion 1, del b - Utskrifter och Inläsning 9 i Java
Inläsning av ord som en sträng Man scannar med next(). Ord avgränsas med mellanslag, TAB eller ENTER. Gör följande där vi läser in två ord och lagrar dem i två variabler: String s2; s1 = scan.next(); s2 = scan.next(); Och mata in ditt förnamn och efternamn med mellanslag (eller TAB) mellan dem följt av ENTER. Ex.vis: Kim Nilsdotter<ENTER> Skriv sedan ut värdet på variabeln s1 och s2 för att se att de fick rätt värde. Lektion 1, del b - Utskrifter och Inläsning 10 i Java
Blandad inläsning, ord och heltal Man scannar med next() och nextint(). Gör följande där vi läser in två värden och lagrar dem i varsin variabel: String kontonr; double saldo; kontonr = scan.next(); saldo = scan.nextdouble(); Mata in de två värdena med mellanslag (eller TAB) mellan dem följt av ENTER. Ex.vis: ABC-1234 10000,0<ENTER> Skriv sedan ut värdet på variablerna kontonr och saldo för att se att de fick rätt värde. Lektion 1, del b - Utskrifter och Inläsning 11 i Java
Ledtext vid inläsning Före en inläsning bör man alltid ge en ledtext så att man förstår vad som skall läsas in. Exempel: double x,y; System.out.println("Ge x:"); x = scan.nextdouble(); System.out.println("Ge y:"); y = scan.nextdouble(); Jämför med inläsning i Matlab x = input( Ge x ); Lektion 1, del b - Utskrifter och Inläsning 12 i Java
Att ställa om Scanner till engelsk standard för decimaler Om vi läser in doublevärden måste vi ange decimalkomma (svensk standard) istf decimalpunkt (engelsk standard). För att ställa om Scanner till engelsk standard med decimalpunkt, istf decimalkomma gör vi följande: import java.util.locale; Locale.setDefault(Locale.UK); Med denna inställning har vi bestämt att scannern istället klarar att läsa in flyttal som anges med decimalpunkt Lektion 1, del b - Utskrifter och Inläsning 13 i Java
Sammanfattning Scanner Javasatser läser (Scannar) tecknen i strömmen och kan tolka dem på olika sätt: 1. talvis med metoden o nextdouble nästa ord tolkas som ett doublevärde o nextint nästa ord tolkas som ett int-värde 2. strängvis med metoden o nextline hela raden tolkas som ett String-värde o next nästa ord tolkas som ett String-värde 3. booleanvis med metoden o nextboolean nästa ord tolkas som ett booleanvärde Lektion 1, del b - Utskrifter och Inläsning 14 i Java
2. Inläsning via popup-fönster Exempel med klassen JOptionPane. Först måste följande importeras import javax.swing.*; Testa följande: String namn; namn = JOptionPane.showInputDialog( "Vad heter du?"); Det skapar både en ledtext och inläsning. Variabeln som tilldelas värdet av högerledet måste vara en sträng. Värdet av variabeln namn blir Karl-Astrid, dvs en sträng som består av 11 tecken Lektion 1, del b - Utskrifter och Inläsning 15 i Java
Ett exempel till med Popup-fönster import javax.swing.*; String s; double saldo; int år; // Ge ledtext och läs in en sträng,lagra det i s s = JOptionPane.showInputDialog("Saldot?"); // Omvandla strängen s till ett flyttal, lagra i saldo saldo = Double.parseDouble(s); // Ge ledtext och läs in en sträng, lagra det i s s = JOptionPane.showInputDialog("Antal år?"); // Omvandla strängen s till ett heltal, lagra i år år = Integer.parseInt(s); // Beräkna saldot med ränta på ränta 5% saldo = saldo*math.pow(1.05,år); // Resultatutskrift i popup-fönster JOptionPane.showMessageDialog(null, "Saldot blir " + saldo + " efter " + år + " år med räntan 5%"); Kopiera hela exemplet och klistra in i DrJava Interactions och testkör. Se exempel på programkörning på nästa sida Lektion 1, del b - Utskrifter och Inläsning 16 i Java
s = JOptionPane.showInputDialog("Saldot?"); saldo = Double.parseDouble(s); saldo får värdet 10000.00 s = JOptionPane.showInputDialog("Antal år?"); år = Integer.parseInt(s); år får värdet 10 JOptionPane.showMessageDialog(null, "Saldot blir " + saldo + " efter " + år + " år med räntan 5%"); Lektion 1, del b - Utskrifter och Inläsning 17 i Java