Litt om pakker og mest om data inn og ut



Like dokumenter
UNIVERSITETET I OSLO

INF1010 våren 2018 tirsdag 23. januar

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

"Nelsons kaffebutikk"

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

Ta inn og ut av 2D-array. Java 6. Liste over ulike verdier i 2D-array. Det ferdige programmet. Vi skal lage et program som illustrerer hvordan man

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

Forelesningsquiz. Forelesning inf Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.

Spørsmål fra forrige forelesning. INF1000 Forelesning 7. Oppførselen til inword()/inint()/etc. Operator-presedens i Java

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

TOD063 Datastrukturer og algoritmer

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

Å lese tall fra en fil, klassen Scanner

IN Notat om I/O i Java

IN-OO1-EVU Dag 3. Stein Gjessing. Kapittel 4: I/O, if og unntak (exceptions) Kapittel 5: While, switch, mer I/O Kapittel 6: Mengder av objekter

IN105-javaNelson-2. array, evt. flere dimensjoner. Institutt for informatikk Jens Kaasbøll sept En funksjon om gangen En klasse om gangen

I dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

INF Notat om I/O i Java

Oversikt. INF1000 Uke 6. Objekter, pekere og null. Lese og skrive fra/til fil. Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster

INF1000-SIKT - Notat om I/O i Java

Oversikt. Array indeks utenfor sine grenser. Feil i programmet hva skjer?

Stein Gjessing 11. nov IN-OO1-EVU Dag 3. Stein Gjessing

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

INF1000 : Forelesning 5

Ole Christian Lingjærde, 12. september 2013

Bruk av class Scanner, FileWriter og Formatter som alternativ til EasyIO i INF1000.

Forelesning inf Java 4

Forelesning inf Java 5

INF 1010, vår 2005 Løsningsforslag uke 11

Repetisjon. INF gruppe 13

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Forelesning inf Java 5

INF2100. Oppgaver 26. september til 1. oktober 2007

Leksjon 7. Filer og unntak

Forelesning inf Java 5

Enkel lesing og skriving i Java

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

INF1000 (Uke 4) Mer om forgreninger, While-løkker

INF1010 våren Arv og subklasser - del 2

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker

INF1010 våren Arv og subklasser del 1 (pluss litt I/O og unntaksbehandling)

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Oversikt. INF1000 Uke 3. Repetisjon Program. Repetisjon Program. Litt repetisjon Program Variabler og Uttrykk Presedens Matematiske funksjoner

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Tre måter å lese fra terminal.

Løsningsforslag til eksamen i INF1000 våren 2006

Innlesning fra tastatur med easyio. INF1000 høst Vi må først skrive i toppen av programmet: import easyio.*;

IN2030. Oppgave 1. Løsningsforslag. Uke (Disse filene finnes også i mappen ~inf2100/e/e2/.)

Kapittel 12: Filer og strømmer INF 100. Java som første programmeringsspråk

UNIVERSITETET I OSLO

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

INF2100. Oppgaver 23. og 24. september 2010

import java.io.*; import java.util.*; import javagently.text;

Forelesning inf Java 4

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

INF1000 (Uke 6) Mer om metoder, tekster

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forklaring til programmet FilTest.java

Rep: Metoder. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. 3 typer variable: Klassevariable. Java-programmene så langt i kurset:

2 Om statiske variable/konstanter og statiske metoder.

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Bruk av class Scanner, split(), FileWriter og Formatter som alternativ til easyio i INF1000.

Løse reelle problemer

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Kapittel 14: Filer og strømmer. Kort versjon

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Løsningsforslag ukeoppg. 3: sep (INF Høst 2011)

HØGSKOLEN I SØR-TRØNDELAG

Mer om uttrykk, terminal I/O, forgreninger. Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Java 4. Mer om easyio Mer om forgreninger Løkker. 7. september 2004

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

Løsningsforslag Test 2

EKSAMEN I INF244: OBJEKTORIENTERT PROGRAMVAREUTVIKLING I BACHELORSTUDIET I IT OG INFORMASJONSSYSTEMER BACHELORSTUDIET I IT OG ENTREPRENØRSKAP

INF1000 Uke 5. Litt om objekter, filer med easyio, tekst

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

UNIVERSITETET I OSLO

INF2100. Oppgaver 9. oktober 2012 C 100 X 10

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

INF Uke 10. Ukesoppgaver oktober 2012

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF2100. Oppgaver 6. og 11. oktober 2011 C 100 X 10

Java 6. Eksempel med to-dimensjonal array Filbehandling Tekster

UNIVERSITETET I OSLO

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

Socket og ServerSocket

INF2100. Oppgaver uke 40 og

Klassen javax.swing.joptionpane

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

Leksjon 7. Filer og unntak

INF 1000 høsten 2011 Uke september

Transkript:

Litt om pakker og mest om data inn og ut IN105-javainnogut-1

import java.io.*;. Data inn fra tastaturet lesemetode tastatur BufferedReader void lesemetode (String [ ] args) throws IOException {... /* sett opp et objekt 'tastatur' hvis metoder foretar bufret innlesing fra tastaturet */ buffer String readline( ) BufferedReader tastatur = new BufferedReader (new InputStreamReader (System.in)); String streng; streng = tastatur.readline ( ); // leser en linje fra tastaturet. InputStreamReader Data inn fra tastatur IN105-javainnogut-2

Data fra tastaturet - eksempel import java.io.*; class Hilsen{ // side 97 i læreboka public static void main (String [ ] args) throws IOException { new Hilsen ( ) ; Hilsen ( ) throws IOException { BufferedReader tastatur = new BufferedReader (new InputStreamReader(System.in)); System.out.println("Hva heter du?"); String name = tastatur.readline ( ); System.out.println("Goddag, " + name); snidil:>javac Hilsen.java snidil:>java Hilsen Hva heter du? Ludvig van Beethoven Goddag, Ludvig van Beethoven snidil:> IN105-javainnogut-3

Lesing av tall ett pr. linje import java.io.*;. BufferedReader tastatur = new BufferedReader (new InputStreamreader (System.in));. tastatur int heltall = Integer.parseInt(tastatur.readLine( ) );.. double flyttall = Double.parseDouble( tastatur.readline( ) ); BufferedReader String readline( ) Integer int parseint( ) Double Double valueof( ) double parsedouble( ) IN105-javainnogut-4

Pakker En pakke er en samling (Java)filer som ligger i en katalog. Katalogens navn er pakkens navn, og alle.java-filene må starte med: package <katalognavn>; * Hver fil kan gjerne inneholde flere klasser, men hver fil kan bare ha en klasse som er synlig utenfra (public). * Navnet på denne synlige klassen må også være navnet på filen. * Fra en fil til en annen i samme pakke kan man imidlertid få tak i alle klasser, metoder og variable (unntatt når disse er deklarert private). Eksempel: Pakken Javagently starter slik: package javagently; import java.io.*; import java.util.*; import java.text.*; public class Text {.. IN105-javainnogut-5

Pakkestruktur snidil: java>mkdir myutilities snidil: java>cd myutilities/ snidil: myutilities>copy ~in105/javapakker/myutilities/*.java. snidil: myutilities>ls -l -rw------- 1 steing 1392 Feb 15 14:16 Dates.java -rw------- 1 steing 626 Feb 15 14:16 FileMan.java -rw------- 1 steing 1800 Feb 15 14:16 List.java -rw------- 1 steing 696 Feb 15 14:16 Sort.java -rw------- 1 steing 95 Feb 15 14:16 Sortable.java snidil: myutilities> katalogen myutilities Filen Dates.java package myutilities; Filen FileMan.java package myutilities; Filen Sortable.java package myutilities; class Dates { class FileMan { open ( ). interface Sortable { IN105-javainnogut-6

Om pakken javagently og klassen Stream Pakken javagently med klassene Text og Stream er skrevet av J. Bishop for å forenkle programmeringen av datainn og dataut Text innholder utelukkende klassemetoder den er altså en verktøykiste det er ikke meningen å lage objekter fra den. Stream har de samme metodene, men knyttet til objekter som kontrollerer datastrømmer Klassene ligger i en pakke kalt javagently som må importeres Pakken må den ligge i en "Classpath" en måte å fortelle Java hvor den skal lete etter klasser. Dette kan gjøres på tre ulike måter: o Legge pakken i samme mappe som programmene o Opprette en mappe classes under mappen jdk1.2 og legge pakken der mappen classes ligger nemlig i Java standard Classpath o Legge pakken i nivået over arbeidsnivået og legge til en Classpath dit jfr s.124. Krever kunnskap om operativsystem-kommandoen SET IN105-javainnogut-7

Klassen javagently.stream For å forenkle lesing og skriving har Judy Bishop laget en class Stream som behandler innlesing og utskrift fra fil og tastatur/skjerm: Stream String readstring (...) Stream minskjerm= new Stream ( System.in ) ; int readint (...) String streng = minskjerm.readstring ( ); class Stream { Stream ( InputStream in ) {... Stream ( String filename, int why ) {... public double readdouble ( ) {. public int readint ( ) {. public char readchar ( ) {. public String readstring (...) {.. char readchar (...) double readdouble (...) Klassen Stream leser tekstbiter (engelsk: items) eller tall som er adskilt med blank, tabulator, linjeskift. IN105-javainnogut-8

Bruk av javagently.stream import java.io.*; import javagently.*; class Hilsen { public static void main ( String [ ] args ) throws IOException { new Hilsen ( ); Hilsen ( ) throws IOException { Stream tastatur = new Stream (System.in); System.out.println("Hva heter du?"); String navn = tastatur.readstring( ); System.out.println("God dag, " + navn ); Greetings tastatur navn Stream String readline( ) String readstring ( ) snidil:>javac Hilsen.java snidil:>java Hilsen Hva heter du? Pierre Godefroy God dag, Pierre snidil:> IN105-javainnogut-9

Summering av tall fra tastaturet import java.io.*; import Stream; class SumTast { public static void main (String [] args) throws IOException { new SumTast ( ); SumTast ( ) throws IOException { Stream tastatur = new Stream (System.in); int nyttall = 1; int sum = 0; int tel; System.out.println("Tast inn noen tall, avslutt med 0: "); for (tel = 0; nyttall!= 0 ; tel ++) { nyttall = tastatur.readint( ); sum += nyttall; // end for-løkke System.out.println("Du skrev " + tel + " tall."); System.out.println("Summen av tallene er: " + sum); SumTast tastatur tel sum nyttall Stream snidil: >javac SumTast.java snidil: >java SumTast Tast inn noen tall, avslutt med 0: 34 23 23 34 56 78 362 0 Du skrev 8 tall. Summen av tallene er: 610 snidil: java> IN105-javainnogut-10

Lesing og skriving på filer på disk (platelager) CPU Her regner maskinen Databuss Her flyttes data og program fram og tilbake Primærlager 0 1 2...... Lokalnett Her lagres program og data under kjøring Disk Her lagres program, oversatte programmer og data permanent (på filer) IN105-javainnogut-11

Innlesing fra fil Først må vi lage en forbindelse med filen, det gjør vi med enten innfil Stream BufferedReader innfil = new BufferedReader (new FileReader ( minfil.txt )); eller: Dette objektet leser fra filen minfil.txt Stream innfil = new Stream( minfil.txt, Stream.READ); I det siste tilfellet kan vi bruke filen på samme måte som vi leste data fra tastaturet: double dtall; String tekst; dtall = innfil.readdouble( ); tekst = innfil.readstring( ); minfil.txt 123.54 Forelesning tekst dtall IN105-javainnogut-12

import java.io.*; import Stream; class SumFil { public static void main (String [] args) throws IOException { new SumFil ( ) ; SumFil ( ) throws IOException { int resultat = 0, tall; Stream innfil = new Stream ( "minfil.txt", Stream.READ ); for (int tel = 1; tel<= 15 ; tel ++) { tall = innfil.readint( ); resultat += tall ; // end for-løkke System.out.println("Summen er " + resultat); // end SumFil snidil: java>javac SumFil.java snidil: java>java SumFil Summen er 8812083 snidil: java> Innlesing fra fil Filen minfil.txt (laget f.eks. med emacs) SumFil innfil tall resultat Stream Dette objektet leser fra filen minfil.txt 1256 345 245 345 1234 5576 43321 098098 8584 7588 3450 87544 9876 4332 8540289 IN105-javainnogut-13

Innlesing fra fil med antall import java.io.*; import Stream; class SumFil2 { public static void main (String [] args) throws IOException { new SumFil2 ( ) ; SumFil2 ( ) throws IOException { int resultat = 0, tall; Stream innfil = new Stream ( "lengdefil.txt", Stream.READ ); int antall = innfil.readint( ); for (int tel = 1; tel<= antall ; tel ++) { tall = innfil.readint( ); resultat += tall ; // slutt for-løkke System.out.println("Summen er " + resultat); // slutt SumFil2 snidil: >javac SumFil2.java snidil: >java SumFil2 Summen er 8812083 snidil: > Institutt for informatikk - høsten Stein 2000 Gjessing SumFil2 innfil antall tall resultat Stream Dette objektet leser fra filen lengdefil.txt 15 1256 345 245 345 1234 5576 43321 098098 8584 7588 3450 87544 9876 4332 8540289 IN105-javainnogut-14

PrintWriter utfil = new PrintWriter (new FileWriter ( minutfil.txt )); eller: Utskrift til fil SkrivFil utfil Stream Stream utfil = new Stream ( minutfil.txt, Stream.WRITE); void println() // Utskrift skjer som til skjerm: utfil.println( utskrift + 17 ); For at innholdet på den nye filen skal bevares må vi til slutt si: Dette objektet skriver på filen minutfil.txt minutfil.txt utfil.close( ); IN105-javainnogut-15

Utskrift til fil - eksempel import java.io.*; import Stream; class InnUt { public static void main (String [] args) throws IOException { new InnUt ( ) ; InnUt ( ) throws IOException { String tekst1, tekst2; Stream tastatur = new Stream (System.in); Stream filut = new Stream ("minutfil.txt", Stream.WRITE ); System.out.print("Fornavn: "); tekst1= tastatur.readstring( ); System.out.print("Etternavn: "); tekst2= tastatur.readstring( ); filut.println("navn: " + tekst1 + " " + tekst2); System.out.print("Gatenavn: "); tekst1= tastatur.readstring( ); System.out.print("Gatenummer: "); tekst2= tastatur.readstring( ); filut.println("adresse: "+ tekst1 + " " + tekst2); System.out.print("Postnummer: "); tekst1= tastatur.readstring( ); System.out.print("Poststed: "); tekst2= tastatur.readstring( ); filut.println("poststed: "+ tekst1 + " " + tekst2); filut.close( ); System. out.println("er skrevet på \"minutfil.txt\""); filut minutfil.txt Dette objektet skriver på filen minutfil.txt Navn: Per Petersen Adresse: Solhellinga 12 Poststed: 4990 Søndeled snidil: java>java InnUt Fornavn: Per Etternavn: Petersen Gatenavn: Solhellinga Gatenummer: 12 Postnummer: 4990 Poststed: Søndeled er skrevet på "minutfil.txt" snidil: java> IN105-javainnogut-16

Lesemetoder i klassen Stream Stream tastatur = new Stream ( System.in ); int tall; tall = tastatur.readint( ); Metoden readint vil returnere et heltall ved å gjøre en tekst ("token") om til et heltall ved hjelp av klassen Integer:.. return( Integer.parseInt( tekst ) ); Klassen Double har en metode som tilsvarer parseint. Men Stream har foreløpig ikke fått med seg det. Stream double readdouble (...) int readint (...) char readchar (...) String readstring (...) Derfor må metoden readdouble i Stream ta en tekst som tilsvarer et reelt tall og gjøre det om til et reelt tall: return Double.valueOf( tekst.trim( )).doublevalue( ); IN105-javainnogut-17

Innmaten i Stream Generell algoritme for lesemetodene J a Is the tokenizer empty? yes Print an error-message no Read in a line Create a tokenizer for it Invalid number Get the next token Convert it to an integer No more tokens return IN105-javainnogut-18

streamobjekt.readint ( ) private StringTokenizer T; private String S; public int readint ( ) throws IOException { if ( T==null ) refresh ( ); while (true) { try { return Integer.parseInt(T.nextToken( ) ); catch (NoSuchElementException e1 ) { refresh ( ); catch ( NumberFormatException e2 ) { Integer System.out.println ( "Error in number, try again." ); private void refresh ( ) throws IOException { S = in.readline ( ); if ( S==null ) throw new EOFException( ); T = new StringTokenizer ( S ); parseint <og så hvis feil:> throw new NumberFormatException( );... IN105-javainnogut-19

... Ledetekster Stream tastatur = new Stream ( System.in ); System.out.print("Skriv inn navnet ditt : " ); System.out.flush(); String navn = tastatur.readline ( );... System.out.flush( ); void ledetekst ( String tekst) { System.out.print ( tekst + " : "); System.out.flush ( );... ledetekst ( "Skriv inn navnet ditt"); sikrer at ut-bufferens innhold skrives ut med øyeblikkelig virkning. Skriv inn navnet ditt : John Coltrane IN105-javainnogut-20

Stream.format ( ) - heltall int i = 9, j = 25, k = 3456; utfil.println ( Stream.format ( i, 10 ) ); utfil.println ( Stream.format ( j, 10 ) ); utfil.println ( Stream.format ( k, 10 ) ); resulterer i : 9 25 3456 IN105-javainnogut-21

Stream.format ( ) - desimaltall double r = 3, s = 43.14, t = 233.566, u = 0.999; utfil.println ( Stream.format ( r, 10, 2 ) ); utfil.println ( Stream.format ( s, 10, 2 ) ); utfil.println ( Stream.format ( t, 10, 2 ) ); utfil.println ( Stream.format ( u, 10, 2 ) ); resulterer i 3,00 43,14 233,57 1,00 Hvordan unngå 0.700000000000000342? IN105-javainnogut-22

Stream.format ( ) - for trang plass int i = 9, j = 25, k = 3456; utfil.println ( Stream.format ( i, 3 ) ); utfil.println ( Stream.format ( j, 3 ) ); utfil.println ( Stream.format ( k, 3 ) ); resulterer i: 9 25 3456 Husk å sette av plass til eventuelt fortegn! IN105-javainnogut-23

Unntak ved lesing og skriving - Filen fins ikke (FileNotFoundException) - Det er slutt på filen (EOFException) - Andre feil. Disken er full! (IOException) IN105-javainnogut-24

Hvordan håndtere unntakene? Stream innfil; try { innfil = new Stream ("minedata.txt", Stream.READ ); while ( true ) { // løkka brytes ved unntak String linje = innfil.readline ( ); catch ( FileNotFoundException e ) { System.out.println ("Obs, filen manglet!"); catch ( EOFException e ) { System.out.println ( "Vi leste hele filen."); catch ( IOException e ) { System.out.println ( "Hva skjedde? Jo,dette : " + e ); System.out.println ( e.message ( ) ); IN105-javainnogut-25

Finn gjennomsnitt import java.io.*; import javagently.*; //Gsnitt1.java... throws IOException { Stream tastatur = new Stream ( System.in ); int nyttall = 1, tel, sum; double gjennomsnitt; System.out.print ( Tast inn noen tall, avslutt med 0: ); for (tel = 0; nyttall!= 0 ; tel ++) { nyttall = tastatur.readint ( ); sum += nyttall; tel --; if (tel > 0) gjennomsnitt = (double) sum / tel; else gjennomsnitt = 0; System.out.println( Du skrev + tel + tall. ); System.out.println( Gjennomsnittet er: + gjennomsnitt ); GjsnittTast tastatur tel sum nyttall gjennomsnitt Stream int readint ( ) Dette objektet leser fra tastaturet IN105-javainnogut-26

Finn gjennomsnitt - 2 import java.io.*; import javagently.*; // Gsnitt2.java... throws IOException { Stream tastatur = new Stream ( System.in ); int nyttall, sum = 0, tel; double gjennomsnitt; boolean fortsett = true; System.out.print ( Tast inn noen tall, avslutt med 0: ); for ( tel = -1; fortsett ; tel ++) { nyttall = tastatur.readint ( ); if ( nyttall == 0 ) { fortsett = false; else { sum += nyttall; / if (tel > 0) gjennomsnitt = (double) sum / tel; else gjennomsnitt = 0; System.out.println( Du skrev + tel + tall. ); System.out.println( Gjennomsnittet er: + gjennomsnitt ); navn: fortsett type: boolean snidil: >javac Gsnitt2.java snidil: >java Gjsnitt2 Tast inn noen tall, avslutt med 0: 45 34 23 34 456 0 Du skrev 5 tall. Gjennomsnitter er: 118.4 snidil: > Her er en variant av det samme programmet. Se på de små forskjellene. Legg spesielt merke til hvordan vi bruker en logisk variabel til å kontrollere når vi skal stoppe repetisjonen: IN105-javainnogut-27

Finn største tall import java.io.*; import javagently.*;// HighestValue.java... throws IOException { Stream in = new Stream ( System.in ); System.out.println ( "** Finding the highest number **" ); System.out.println ( "How many numbers (1 or more)?" ); int n = in.readint ( ); System.out.println("Type them in"); System.out.print ( "1> " ); int highest = in.readint ( ); int number; for (int i = 2; i <= n; i++) { System.out.print ( i + > ); number = in.readint ( ); if (number > highest) { highest = number; System.out.println("That's enough, thanks"); System.out.println("The highest number was +highest); highest number Variablen highest inneholder høyeste verdi til nå snidil: >javac HighestValue.java snidil: >java HighestValue ** Finding the highest number ** How many numbers (1 or more)? 4 Type them in 1> 234 2> 6321 3> fem Error in number, try again. 5 4> 2463 That's enough, thanks The highest number was 6321 snidil: > IN105-javainnogut-28

import java.io.*; //Summation3, JG s.108 import javagently.*;...throws IOException { Stream in = new Stream ( System.in ); int count; double total = 0, postotal = 0, negtotal = 0, number; System.out.print ( "How many numbers?" ); count = in.readint ( ); for (int i = 1; i <= count; i++) { System.out.println ( i+">" ); number = in.readdouble( ); total = total + number; if ( number > 0 ) { postotal += number; System.out.println ( Positivt tall ); else { negtotal += number; System.out.println ( Negativt tall ); // end if // end for Tre summer Øving: Rett programmet slik at det ikke skriver at null er et negativt (eller et positivt) tall snidil: >javac Summation3.java snidil: >java Summation3 How many numbers? 6 1> 34 Positivt tall 2> 56 Positivt tall 3> -2 Negativt tall 4> 0 Negativt tall 5> 34 Positivt tall 6> -23 Negativt tall That's enough, thanks. The total is 99.0 The pos. total is 124.0 The neg. total is -25.0 snidil: > System.out.println("That's enough, thanks."); System.out.println("The total is " + total); System.out.println("The pos. total is " +postotal); System.out.println("The neg. total is " +negtotal); IN105-javainnogut-29