Du er her: UiO > 澳门葡京手机版app下载 > Emner > Matematikk og naturvitenskap > Informatikk > INF1000 > h08 > ukeoppgaver >

L?sningsforslag ukeoppg. 1: 25.-28. aug (INF1000 - H?st 2008)

Et f?rste m?te med Java ? kapittel 1 og 2.1?2.3
NB! Disse er bare eksempler p? hvordan oppgavene kunne l?ses. Det er vanligvis mange forskjellige m?ter ? l?se samme oppgave p?, og alle som gir riktig svar er ok p? INF1000.
Fors?k ? l?se alle oppgavene p? egen h?nd f?rst. Deretter kan du sammenligne med forslagene her.  Disse l?sningsforslag st?r ogs? i l?rebokens hjemmeside: www.universitetsforlaget.no/java.

Oppgave 1 i kap. 1: class Rachmaninov { public static void main(String[] args) { System.out.println("Rachmaninovs 3. klaverkonsert har et vakkert ?pningstema"); } } Kj?reeksempel: > javac Rachmaninov.java > java Rachmaninov Rachmaninovs 3. klaverkonsert har et vakkert ?pningstemaMer om Rach3/video
Oppgave 2 i kap. 1: class Studie { public static void main(String[] args) { System.out.println("Rett p? Java"); } } a) Fjern ordet 'static': ------------------------------------------------------------ > javac Studie.java > java Studie.java Exception in thread "main" java.lang.NoSuchMethodError: main ------------------------------------------------------------ Programmet lar seg kompilere (javac), men ikke kj?re (java) fordi det mangler en main-metode av riktig type. b) Fjern ordet 'void': --------------------------------------------------------------- > javac Studie.java Studie.java:2: invalid method declaration; return type required public static main(String[] args) { ^ 1 error --------------------------------------------------------------- Programmet lar seg ikke kompilere, fordi uten void kreves tilleggssetninger i selve metoden (minst en setning med n?kkelordet return, se avsnitt 7.5 i boka) og angivelse av return-type. Om vi hadde lagt inn en return-setning i main og en type i deklarasjonen av main, ville det likevel ikke latt seg kj?re fordi main ikke lenger er av riktig type. c) Programmet lar seg kompilere, men ikke kj?re rett og slett fordi klassen har feil navn. d) Programmet lar seg b?de kompilere og kj?re. Resultatet er en annen utskrift. e) Ved kompilering f?r vi en feilmelding som forteller at det mangler en h?yre kr?llparentes i linje 5.
Oppgave 3 i kap. 1: class Utskrift { public stitac void main(String args) ( System.out.println("Beethoven skrev Skjebnesymfonien") System.out.println("og ?tte andre symfonier.); } } Det er 5 feil: F?rste fors?k p? kompilering gir f?lgende feilmeldinger: ------------------------------------------------------ Utskrift.java:2: <identifier> expected public stitac void main(String args) ( ^ Utskrift.java:2: ';' expected public stitac void main(String args) ( ^ Utskrift.java:4: unclosed string literal System.out.println("og ?tte andre symfonier.); ^ Utskrift.java:6: class, interface, or enum expected } ^ 4 errors ------------------------------------------------------ - static er skrevet feil - Det mangler hakeparenteser ("[]") etter "String" p? linje 2. Denne feilen oppdages ikke av kompilatoren, men av kj?resystemet: java.lang.NoSuchMethodError: main Exception in thread "main" Kj?resystemmet finner ikke noen riktig skrevet main-metode. - Det st?r vanlig parentes i stedet for kr?llparentes i slutten av linje 2. - Det mangler semikolon p? slutten av linje 3. - Avsluttende anf?rselstegn mangler p? linje 4.
Oppgave 5 i kap. 1: Her er 2 m?ter ? programmere slike utskrifter p?, begge gir samme resultat. "\n" (bakover-skr?strek etterfulgt av n) er koden for linjeskift i Java. class Pyramide { public static void main(String[] args) { System.out.println(" a"); // 4 mellomrom f?rst, s? "a" System.out.println(" a a"); System.out.println(" a b a"); System.out.println(" a c c a"); System.out.println("a d f d a"); } } class Pyramide { public static void main(String[] args) { System.out.println(" a\n" + " a a\n" + " a b a\n" + " a c c a\n" + "a d f d a"); } } Kj?reeksempel: > java Pyramide a a a a b a a c c a a d f d a
Oppgave 1 i kap. 2: class Rektangel { public static void main(String[] args) { int bredde; int lengde; int areal; bredde = 3; lengde = 5; areal = lengde * bredde; System.out.println("Areal av et rektangel med bredde " + bredde + " og lengde " + lengde + " er " + areal); bredde = 7; lengde = 3; areal = lengde * bredde; System.out.println("Areal av et rektangel med bredde " + bredde + " og lengde " + lengde + " er " + areal); bredde = 4; lengde = 9; areal = lengde * bredde; System.out.println("Areal av et rektangel med bredde " + bredde + " og lengde " + lengde + " er " + areal); } } Kj?reeksempel: > java Rektangel Areal av et rektangel med bredde 3 og lengde 5 er 15 Areal av et rektangel med bredde 7 og lengde 3 er 21 Areal av et rektangel med bredde 4 og lengde 9 er 36
Oppgave 2 i kap. 2: 3. linje: - int, ikke "integer" 5. linje: - volum er ikke deklarert - bredde er ikke initialisert - h?yde er ikke initialisert 6. linje: - volum er fortsatt ikke deklarert