Está en la página 1de 15

Fachhochschule Esslingen

Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 1

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Name:

Skript(e), Bcher
Vorname:

90 Minuten

Matr.Nr.:

Teil 1: Grundeigenschaften von Rechnern und Software [10P]


Aufgabe 1.1 - Programmieren Lernen [5P] 0,5P pro richtigem Feld
Klassifizieren Sie die folgenden Aussagen als richtig oder falsch
Richtig
[X]
[ ]
[ ]
[X]
[X]

Falsch
[ ]
[X]
[X]
[ ]
[ ]

Aufgabe 1.2 - Programmierung in der Praxis [5P] 0,5P pro richtigem Feld
Klassifizieren Sie die folgenden Aussagen als richtig oder falsch
Richtig
Wer programmieren kann, beherrscht noch lange nicht (immer) die Syntax
[X]
Algorithmen berlegt man sich am Besten erst beim programmieren
[ ]
Wer in groen Schritten denkt, wird schneller fertig
[ ]
Wenn ein Programm keine Syntaxfehler mehr hat, ist es richtig
[ ]
Wer Fehlermeldungen aufmerksam liest, kann Fehler schneller beheben
[X]

Falsch
[ ]
[X]
[X]
[X]
[ ]

Wer die Syntax beherrscht, kann noch lange nicht programmieren


Programme anderer Leute zu lesen ist sinnlos
Softwareentwicklung ist eine Ingenieursdiziplin wie jede andere auch
Um Java "sprechen zu knnen" muss man viel Java "sprechen ben"
Programmieren lernt man am Besten langsam und kontinuierlich

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 2

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Skript(e), Bcher

Name:

Vorname:

90 Minuten

Matr.Nr.:

Teil 2: Grundlagen der Kodierung von Informationen [5P]


Aufgabe 2.1 - Zahlensysteme [5P] 1P pro Antwort mit Rechenweg
Rechnen Sie die folgenden Zahlen in das jeweils angegebene Zahlensystem um
Hinweis: Der Rechenweg muss erkennbar sein!
Binr: 10010110
-->
Hex:
1001 0110 = 96
(1 Hexziffer = 4 Bit)

Hex:

CAFE

-->

Oktal: 1100 1010 1111 1110 = 001 100 101 011 111 110 = 145376
(1 Hexziffer=4 Bit)
(1 Oktalziffer = 3 Bit)

Oktal:

2007

-->

Dezimal: 2*8^3 + 7*8^0 = 2*512 + 7 = 1031

Dezimal:

1030

-->

Oktal: 2006 (vgl. vorige Teilaufgabe, sonst Restwertalgorithmus)

Alternativ mit Restwertalgorithmus:


1030 -> 128(6) -> 16(0) -> 2(0) -> 0(2) = 2006
Dezimal:

-42

-->

- 0,5P wenn Ansatz aber nicht berechnet

Binr (8 Bit):

42 = 32 + 10 = 2* 16 + 10 = 0010 1010 (komplement)--> 1101 0101 (+1)--> 1101 0110


(0,5P)
(0,5P)
Aufgabe 2.2 Berechnungen in anderen Zahlensystemen [5P]
Berechnen Sie im jeweiligen Zahlensystem:
Dezimal:
1P

1537
+ 2951
1000
= 4488

Binr: 00101011 +43


1P +00011111 +33
01111110
01001010 +76

Dezimal:
1,5P

5351
5351
Binr: 00111001 +57 = 00111001
- 3456 +6544 <= 2-er Komplement 1,5P -00011001 -25 = +11100111
1110 10000
111111110
= 1895
1895
= 00100000
00100000 +32

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 3

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Skript(e), Bcher

Name:

Vorname:

90 Minuten

Matr.Nr.:

Teil 3: Elementare Programmbestandteile [40P]


Aufgabe 3.1 - Datentypen [5P] je 1P
Beantworten Sie die folgenden Fragen:
Geben Sie ein Beispiel fr ein Ganzzahl-Literal an. Welchen Datentyp hat es?
42 (int) oder 42L (long), ausnahmsweise auch Darstellungen wie "int i=5" (passt nicht zur Frage!)
Der Datentyp byte hat einen Wertebereich von -128 bis + 127. Wieviele Bits sind dafr ntig?
8 Bits (-128 = -2^7 +2^7-1 = +127)
Was passiert, wenn man zu einer Variablen vom Typ byte mit dem Wert 42 den Wert 86 addiert?
Der Wert 128 ist nicht darstellbar, es kommt zu einem berlauf auf -128 (10000000)
0,5 Punkte fr "passt nicht", volle Punktzahl fr "wird zu int" da 86 in Java ein int Literal ist
Was muss man bei einer Zuweisung eines int-Werts an eine Variable vom Typ byte beachten?
Der Datentyp int hat einen greren Wertebereich. Es knnte also Genauigkeit verloren gehen
(possible loss of precision). Daher ist ein expliziter cast auf (byte) ntig.
0,5 Punkte fr "muss im Wertebereich liegen"
Welcher primitive Datentyp kann an keinen anderen primitiven Datentypen zugewiesen werden?
boolean

Aufgabe 3.2 - Variablen [10P] +2


Beantworten Sie die folgenden Fragen
Welche der folgenden Variablennamen sind syntaktisch nicht korrekt (durchstreichen)? je 0,5P
name1
name1

9er
9er

firstName
firstName

last_name
last_name

i
i

K0NSTANT3
K0NSTANT3

kfz-steuer
kfz-steuer

class
class

Variablen sind "Schubladen" in denen verschiedene Dinge stehen knnen. Wie unterscheidet der
Schubladeninhalt der folgenden Variablen (Skizze)? je 1P
^^^^^^^ !!!
int i = 321;
[ 321 ] (Wert) bzw. primitiver Datentyp
String s = "321";
[ ---]---> "321" (Referenz) bzw. Referenztyp
Wie lautet der erste und der letzte gltige Index bei folgendem Array? je 0,5P
int[] bits = {1, 2, 4, 8, 16, 32, 64, 128}; // bits[0]bits[7]

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 4

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Skript(e), Bcher

Name:

Vorname:

90 Minuten

Matr.Nr.:

Geben sie eine Programmzeile an, die eine Array-Variable fr 49 Lottozahlen definiert. 1P
int[] lotto = new int[49]; // "fr", nicht "mit"! Kein Math.random()!
0,5 Punkte bei falschem Typ wie String oder Anzahl 48 (Index=0..48, Anzahl 49!)

Skizzieren Sie die Struktur des in der Variablen shapeArray gespeicherten Arrays und geben
Sie die jeweils enthaltenen Datentypen und Werte an.
int[][] shapeArray = new int[3][];
shapeArray[2] = new int[2];
shapeArray[0] = new int[6];
shapeArray[1] = new int[4];
int[3][]shapeArray --> int[ ] --> [0][0][0][0][0][0]
int[ ] --> [0][0][0][0]
int[ ] --> [0][0]
0,5P je Teilarray + 0,5P fr korrekte Typen/Werte

Aufgabe 3.3 - Ausdrcke [10P] je 1P


Beantworten Sie die folgenden Fragen
Geben Sie den Datentyp der folgenden Ausdrcke an (mit i=int, d=double)
i + 3L
i++
d * 3.14
d == i
(i >= 0 ? i : -1)

Antwort: long (Promotion)


Antwort: int (Inkrement)
Antwort: double (homogene Berechnung)
Antwort: boolean (Vergleich)
Antwort: int (Bedingungsoperator)

Berechnen Sie den Wert der folgenden Ausdrcke


1 + 1/4
0x08 | 0x04
1<<2<<3
17 % 4
Math.sqrt(16)

Antwort:
Antwort:
Antwort:
Antwort:
Antwort:

1 ( == 0 in int!)
1000 | 0010 = 01100 = 12 (zwlf)
(1<<2)<<3) = (1<<2)<<3 = 100 << 3 = 100000 = 32
17/ 4 = 4 R 1, also 1
Wurzel aus 16 = 4.0

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 5

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Name:

Skript(e), Bcher
Vorname:

90 Minuten

Matr.Nr.:

Aufgabe 3.4 - Kontrollstrukturen [10P]


Geben Sie fr folgende Aufgaben jeweils eine geeignetes Programmstck an und
Benennen Sie die Art der Kontrollstruktur (Schleife, Verzweigung, Sequenz)
a) Einlesen einer Zahl von der Tastatur und Ausgabe des verdoppelten Werts
Sequenz, Folge von Anweisungen: (1P)
CommandLine cl = new CommandLine();
int i = cl.readInt( "Bitte eine Zahl eingeben:");
System.out.println( "Verdopplung: " + 2*i);
b) Ausgabe der Summe aller Werte in dem int-Array 'numbers'
^^^^^^^^ nicht Gesamtmenge, t-t!

Schleife (vollstndig), z.B. neue oder alte for-Schleife (3P)


int summe = 0;
for (int n : numbers) {
summe += n;
}
System.out.println( summe);

int summe = 0;
for (int i=0; i<numbers.length, ++i) {
summe = summe + numbers[i]
}
System.out.println( summe);

c) Je nach Grenordnung des Werts der Variablen i sollen folgende Zeichenketten ausgegeben
werden: "einstellig", "zweistellig" oder "wow!"
Selektion, Unterscheidung von Wertebereichen geht nur mit if-else (3P), nix fr switch!
// Alternativlsungen mit Untergrenze/Vorzeichen gab es auch

if ( i<10) { // von klein


System.out.println( "einstellig");
} else if ( i<100) { // nach gross (keine Untergrenze wg. else!)
System.out.println( "zweistellig");
} else { // und den rest
System.out.println( "wow!");
}
d) Suche und Ausgabe der letzten ungeraden Zahl in dem int-Array 'numbers'
Schleife (bis Abbruch), also z.B. mit while (3P)
for ( int i=numbers.length-1; i>=0; --i) {
if ( n%2!=0) {
System.out.println( n);
break;
}
}

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 6

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Skript(e), Bcher

Name:

Vorname:

90 Minuten

Matr.Nr.:

Aufgabe 3.5 - Funktionen [5P]


Beantworten Sie die folgenden Fragen
Geben Sie die Signatur einer privaten Klassenmethode mit dem Namen getCount an, welche den
Wert der Klassenvariable count vom Typ int zurckgibt.
// getter sind OHNE PARAMETER, also kein getCount(int count)!
private static int getCount() { // 2P - 0,5P pro Fehler
return count; // diese Zeile war nicht verlangt
}
Kennzeichnen Sie in dem folgenden Programm die berschrieben Methoden mit (x) und die
berladenen Methoden mit (v) je 1P, 0,5P wenn (x) und (v) vertauscht nicht fr blindes raten!
public class Klausur {
public int aufgabe( String text) { (v)
// Aufgabe am Bildschirm anzeigen
}
public int aufgabe( String text, String hilfe) { (v)
// Aufgabe mit Hilfe am Bildschirm anzeigen
}
public double note( int punkte) {
// note ermitteln
}
public String toString()(x)
return "Eine interessante Klausur";
}
public static void main( String[] args) { // wie sollte main ber...en sein???
Klausur k = new Klausur();
int p1 = k.aufgabe( "Text fr erste Aufgabe...");
int p2 = k.aufgabe( "Text fr zweite Aufgabe...");
System.out.println( k.note( p1+p2));
}
}

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 7

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Skript(e), Bcher

Name:

Vorname:

90 Minuten

Matr.Nr.:

Teil 4: Objektorientierte Konzepte [10P]


Aufgabe 4.1 - Kapselung [5P]
In Java besteht die Mglichkeit, den Zugriff auf Variablen und Methoden zu
verbieten. Kennzeichnen sie die illegalen Zugriffe in folgendem Code-Beispiel.
// Datei: Person.java
package people;
public class Person {
private String firstName;
protected String lastName;
protected Person( String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String toString() {
return firstName + " " + lastName;
}
}
// Datei: Student.java
package people.education;
import people.Person;
public class Student extends Person {
protected String matrikelnummer;
private String spickzettel;
int semester;
public Student( String vorname, String nachname, String matrikelnummer) {
super( vorname, nachname);
this.matrikelnummer = matrikelnummer;
this.semester = 1;
}
public String toString() {
return super.toString() + "(" + matrikelnummer + ")";
}
}

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 8

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Skript(e), Bcher

Name:

Vorname:

90 Minuten

Matr.Nr.:

// Datei: Dozent.java
package people.education;
import people.Person;
public class Dozent extends Person{
protected String personalnummer;
public Dozent( String vorname, String nachname, String personalnummer) {
this.firstName = vorname; // war Tippfehler: this.vorname; Extrapunkt
this.lastName = nachname; // war Tippfehler: this.nachname; private
this.personalnummer = personalnummer;
}
public boolean kontrolliereKlausur( Student s) {
if (null == s.spickzettel) { // private
s.semester++;
return true;
} else {
return false;
}
}
}
// Datei: Hochschule
import people.*;
import people.education.*;
public class Hochschule {
public static void main( String[] args) {
Person p = new Person( "Max", "Mustermann"); // protected
Student s = new Student( "Moritz", "Musterstudent", "123456");
Dozent d = new Dozent( "Hans", "Streng", "P54326");
if ( d.kontrolliereKlausur( s)) {
System.out.println( s.lastName + " mogelt!"); // protected
}
System.out.println( s + " ist im " + s.semester + ". Semester"); // default
}
}

Aufgabe 4.2 - Vererbung [5P] 1P pro Stichwort / Begrndung


Beantworten Sie die folgenden Fragen
Von wie vielen Klassen kann eine Klasse in Java (direkt) erben?
In Java gibt es keine Mehrfachvererbung, also nur von einer (1P)

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 9

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Skript(e), Bcher

Name:

Vorname:

90 Minuten

Matr.Nr.:

Wie wird die Vererbungsbeziehung noch bezeichnet bzw. wie kann sie gedeutet werden?
Als "ist-ein" Beziehung (1P), alternativ auch "Spezialisierung"
An welcher Stelle der folgenden Vererbungshierarchie wird die Vererbung falsch eingesetzt?
Fhren Sie wenn mglich eine entsprechende Korrektur durch.
Fortbewegungsmittel
geschwindigkeit : int
reichweite: int

Automobil

Pferd

baujahr: int
hersteller: String
leistung: int
kofferraumvolumen: int

geburtsjahr: int
rasse: String

Fahrrad
baujahr: int
hersteller: String
kategorie: String
ritzelVorne: int[]
ritzelHinten: int[]

Rennrad, MTB,

Pkw
kategorie: String

Stufenheck, Kombi, Coupe,

Motorrad
kategorie: String

Enduro, Naked, Race,

Das "Motorrad" ist kein "Automobil" und mte direkt von "Fortbewegungsmittel" erben (1P)
Welche der folgenden Zuweisungen sind gem der obigen Klassenhierarchie nicht zulssig und
wann erfolgt ggf. die Fehlermeldung bei der bersetzung oder zur Laufzeit? je 1P fr Fehler+Art
Automobil a = new Pkw();
Fortbewegungsmittel fb1 = a;
Fahrrad f = (Fahrrad)fb1;
Object o = new Pferd();
Fortbewegungsmittel fb2 = o;

//
//
//
//
//

OK, impliziter upcast


OK, impliziter upcast
Laufzeitfehler: fb1 ist ein Auto, kein Fahrrad
OK, impliziter upcast
Compilerfehler, expliziter downcast ntig

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 10

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Skript(e), Bcher

Name:

Vorname:

90 Minuten

Matr.Nr.:

Teil 5: Angewandte Programmierung [35P]


Aufgabe 5.1 [10P] je 1P pro richtiger Diagnose bzw. Korrektur
Interpretieren Sie die folgenden Code-Beispiele sowie die zugehrigen
Fehlermeldungen und machen Sie jeweils einen Korrekturvorschlag
Quellcode
public class Statikstik {
public void main( String[] args) {
System.out.println( "Hier bin ich!"); // war Tippfehler: printnl; Extrapunkt
}
}

Fehlermeldung (zur Laufzeit)


Exception in thread "main" java.lang.NoSuchMethodError: main

Problem/Lsung
Die main Methode muss statisch sein (static fehlt).
Quellcode
public class Niederlangde {
public static void main( String[] args) {
System.out.printnl( "Ooops!");
}
}

Fehlermeldung
Typo.java:4: cannot find symbol
symbol : method printnl(java.lang.String)
location: class java.io.PrintStream
System.out.printnl( "Ooops!");
^
1 error

Problem/Lsung
Der Compiler kennt die Methode printnl nicht, richtig wre println.
Quellcode
public class NetterVersuch {
public static void main( String[] args) {
try {
int i = System.in.read();
// weitere Programmzeilen
} finally {
System.out.println( "Geschafft!");
}
}
}

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 11

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Skript(e), Bcher

Name:

Vorname:

90 Minuten

Matr.Nr.:

Fehlermeldung
NetterVersuch.java:6: unreported exception java.io.IOException; must be caught
or declared to be thrown
int i = System.in.read();
^
1 error

Problem/Lsung
Ein try-Block fr die I/O Operation ist zwar da aber ohne catch! Alternativ: throws Deklaration
Quellcode
public class SchNullEr {
public static void main( String[] args) {
int i = 10;
while ( 1/i <= 1) {
System.out.println( i--);
}
}
}

Fehlermeldung (zur Laufzeit!)


10
9
8
7
6
5
4
3
2
1
Exception in thread "main" java.lang.ArithmeticException: / by zero
at SchNullEr.main(SchNullEr.java:6)

Problem/Lsung
Bei i=1 ist das Abbruchkriterium immer noch nicht erfllt und die Schleife luft weiter und erzeugt
bei i=0 den obigen Fehler. Richtiger Countdown z.B. mit i >= 0. Hier ist brigends kein Array!
Quellcode
public class Initernational {
public static void main( String[] args) {
int i;
System.out.println( i);
}
}

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 12

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Skript(e), Bcher

Name:

Vorname:

90 Minuten

Matr.Nr.:

Fehlermeldung
Initernational.java:6: variable i might not have been initialized
System.out.println( i);
^
1 error

Problem/Lsung
Die Variable i wurde nur deklariert aber nicht initialisiert und darf so nicht verwendet werden.
Aufgabe 5.2 - Programme lesen [10P]
Analysieren Sie das folgende Programm, beschreiben Sie die Bedeutung der
einzelnen Variablen/Methoden und geben sie die Ausgabe des Programms an.
public class Mystery { // praktische Bedeutung angeben(!):
public String brizzle( char c) { // Vokale ausfiltern:
if ( "aeiou".indexOf( c) == -1) { // -1 wenn kein Vokal...
return Character.toString( c); // ...dann Zeichen zurck...
} else {
return ""; // ...sonst nix zurck
}
} // Vokale und Umlaute sind brigends nicht dasselbe!
public String frotzle( String s) { // Zeichenkette umdrehen:
StringBuilder sb = new StringBuilder();
int p = s.length(); //von hinten nach vorne durchlaufen
while (--p>=0) sb.append( brizzle( s.charAt( p))); // + 1 char
return sb.toString(); // Ergebnis "auspacken"
}
public static void main( String[] args) {
Mystery m = new Mystery(); // neues Objekt erzeugen + aufrufen
System.out.println( m.frotzle( "ist ja alles super gut"));
}
}
Aus der API-Referenz der Klasse String:
int indexOf(int ch)
Returns the index within this string of the first occurrence of
the specified character or -1 if the character was not found.
char charAt(int index)
Returns the char value at the specified index.

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 13

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Skript(e), Bcher

Name:

Vorname:

90 Minuten

Matr.Nr.:

Aus der API-Referenz der Klasse StringBuilder:


StringBuilder append(String str)
Appends the specified string to this character sequence.
Funktion:
Umdrehen einer Zeichenkette und dabei Entfernung aller Vokale
Ausgabe:
tg rps sll j ts
Aufgabe 5.3 - Programme schreiben [15P]
Das folgende Program soll die Wrter in einer Textdatei zhlen und anschlieend
eine alphabetisch sortierte Liste aller Wrter inkl. der jeweiligen Anzahl ausgeben.
Beispieldatei:
der der nicht wagt gewinnt auch nicht!

Ausgabe:
auch 1
der 2
gewinnt 1
nicht 2
wagt 1

Quellcode:
import java.io.*;
import java.util.*;
public class TextAnalyzer {
// Collection zur Sammlung der Ergebnisse
Map words = new TreeMap(); // 1P
/*
* Die folgenden Trenner "\t.,:;!?" identifizieren
*/
public boolean isSeparator( char c) {
return " \t.,:;!?".indexOf( c)!=-1; // 1P Trenner 1P indexOf
}

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 14

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Skript(e), Bcher

Name:

Vorname:

90 Minuten

Matr.Nr.:

/*
* Wert erhhen oder eintragen falls noch nicht vorhanden
*/
public void incrementWordCount( String word) {
if ( words.containsKey( word)) { // vorhandenes wort, erhhen
int count = (Integer)words.get( word);
count++;
words.put( word, count); // 1P Aufruf 1P Wert
} else { // neues wort, erstmalig eintragen
words.put( word, 1); // 1P Aufruf 1P Wert
}
}
/*
* Trenner nutzen um abwechselnd Wortanfang und -ende zu suchen
*/
public void analyzeText( String text) {
StringBuilder word = new StringBuilder();
boolean haveWord = false;
for ( int i=0; i<text.length(); ++i) { // 1P
char c = text.charAt( i);
if ( haveWord) {
if ( isSeparator( c)) {
haveWord = false; // 1P
incrementWordCount( word.toString()); // 2P Call+String
} else {
word.append( c); // 1P
}
} else {
if ( !isSeparator( c)) {
word = new StringBuilder();
word.append( c);
haveWord = true;
}
}
}
if ( haveWord) incrementWordCount( word.toString()); // 2P
}

Fachhochschule Esslingen
Hochschule fr Technik

Wintersemester 2006/2007

Zahl der Bltter: 15


Blatt Nummer: 15

Studiengang:

Fachnummer:

Wirtschaftsinformatik
Prfungsfach: Softwareentwicklung Grundlagen

1 WFB 1041
Semester: 2

Hilfsmittel:

Zeit:

Name:

Skript(e), Bcher
Vorname:

90 Minuten

Matr.Nr.:

/*
* Textdatei lesen und zeilenweise analysieren
*/
public void analyzeFile( String filename) {
try {
FileReader fr = new FileReader( filename);
BufferedReader br = new BufferedReader( fr);
String line = br.readLine();
while ( null != line) {
analyzeText( line);
line = br.readLine();
}
} catch ( IOException ex) {
System.out.println( ex.getMessage());
}
}
/*
* Ergebnis am Bildschirm ausgeben
*/
public void showResult() {
for ( Object word : words.keySet()) {
System.out.println( word + " " + words.get( word)); // 1P
}
}
public static void main( String[] args) {
TextAnalyzer t = new TextAnalyzer();
t.analyzeFile( "C:\\beispiel.txt");
t.showResult();
}
}