Mittuniversitetet
Institutionen för informationsteknologi och medier
Java I
Martin Kjellqvist
2007-04-21
Sid:1(3)
Tentamen 2007-04-21, Java I
Denna tentamen gäller både för kurserna dtaa 94 och dtaa 32.
Hjälpmedel:
Inga!
Skrivningsanvisningar: Maximalt en uppgift per papper, du kan använda så många papper
du önskar för varje uppgift. Skriv endast på en sida. Ange
skrivkod på alla sidor. Om skrivkod inte finns tillgänglig skriver
du ditt namn och personnummer på alla sidor. Skriv enkelt och
tydligt för att undvika feltolkningar. Du får ej använda röd penna.
En uppgift med flera delar kan ge poäng utan att alla delar är
lösta. Uppgifterna är inte ordnade efter svårighetsgrad. Läs
igenom uppgifterna noggrant.
Preliminära gränser:
G:
VG:
Max:
Lycka till!
23p.
36p.
50p.
/Martin
Uppgifter
1.
Beskriv hur Garbage Collection fungerar.
3p
2.
Hur skiljer sig typerna String och StringBuilder?
3p
Vad innebär termen immutable?
3.
Då man definerar en klass har man alltid tumregeln att deklarera variabler privata och
motsvarande get/set- metoder publika varför?
3p
4.
Beskriv kortfattat vad arv innebär.
2p
5.
4p
Vad blir utskriften av följande kompletta program? Var noggrann med alla tecken i
utskriften. Motivera ditt svar!
import java.text.*;
public class Main{
public static void main(String[] args) {
double sum = 0;
int count = 0;
for(int i=-10;i< 10;i++)
for(int j= -1; j<=1; j++, count++)// j och count ++
sum += 1 + j;
double result = sum/count;
System.out.println( "After "+count+" additions, ");
System.out.println( "the total sum is " + sum );
System.out.println( "and the average is " + result );
}
}
Mittuniversitetet
Institutionen för Informationsteknologi och medier
2007-04-21
Sid:2(3)
6.
a)
a) 8 p
Skriv ett fullständigt javaprogram som producerar följande användardialog och utskrift:
b) 3 p
Vad är största faktorn?
5
1
1
1
1
1
2
2 6
2 6 24
2 6 24 120
Användaren har matat in heltalet N=5, och programmet ger en utskrift enligt
följande metod.
-N rader ska skrivas ut.
-Den första raden är alltid en etta.
-Raden efter har samma innehåll som raden ovanför med tillägget: ett tal som är
N*den tidigare sista siffran.
Exempel: Rad 3 innhåller 1, 2 och 6. Rad fyra kommer därför att innehålla 1, 2, 6
och 24 ( av 6*4, där 4 är radnumret ).
b)
Den naturliga datatypen att använda vid denna typ av räkningar är heltalstypen int.
Det visar sig emellertid att i detta program är talområdet för typen int inte
tillräcklig för ganska beskedliga värden på N.
- Vad är typen ints talområde?
- Hur många rader kan man skriva ut innan det blir fel?
- Hur bör man åtgärda felet?
7.
Betrakta programavsnittet, notera att två heltal matas in
6p
Scanner keyb = new Scanner(System.in);
int i = keyb.nextInt();
Scanner keyb = new Scanner(System.in);
int j = keyb.nextInt();
if ( villkor ){
System.out.println("Villkoret är sant!");
}
Skriv villkor så att villkoret är sant om
a) heltalet i ligger utanför intervallet, från och med 0 till och med 10.
b) heltalet i maximalt ligger 3 enheter ifrån j.
c) både i och j är antingen båda jämna, eller båda udda.
Mittuniversitetet
Institutionen för Informationsteknologi och medier
8.
5p
2007-04-21
Sid:3(3)
Beskriv steg för steg, en algoritm som undersöker om en array innehåller två lika värden.
Indata för algoritmen är arrayen A.
Exempel: A = { 2, 4, 5, 8, 24, 3, 9 }. Resultat: nej
Exempel: A = { 2, 4, 5, 8, 24, 5, 9 }. Resultat: ja ( två femmor )
För att resultatet ska bli nej krävs alltså att alla tal är unika.
Du ska inte skriva någon programkod, endast tillvägagångssättet.
9.
8p
Skriv ett komplett program som skriver ut alla textrader som är kortare än 60
tecken i filen. Textfilens namn är C:\texts\textfile.txt
Du ska i din lösning använt klasserna FileReader och BufferedReader, alternativt klassen
Scanner. Om du glömt bort vilka metoder som klasserna innehåller, så gissa. En rimlig
gissning ger färre poängadrag. Glöm inte try / catch. Undantaget som ska fångas är av
typen IOException.
10.
5p
Följande är ett uttdrag ur dokumentationen av metod i klassen java.util.Random.
Random()
Creates a new random number generator.
Random(long seed)
Creates a new random number generator using a single long seed:
int nextInt()
Returns the next pseudorandom, uniformly distributed int value
from this random number generator's sequence.
int nextInt(int n)
Returns a pseudorandom, uniformly distributed int value between
0 (inclusive) and the specified value (exclusive), drawn from this random
number generator's sequence.
Förklara utförligt vad det står. Ge utifrån din förklaring ett minimalt men
komplett program som illustrerar hur man använder metoderna.