# Java-Übungen Probleme



## Thumbnail (5. Jan 2013)

Moin,

ich schreibe demnächst meine erste Programmier-Klausur. Schwerpunkte sind Aufgaben zu Syntax und Semantik von Java, Schreiben einzelner Methoden und eine komplexere Programmieraufgabe. Bei meiner Vorbereitung darauf, hänge ich derzeit an einigen Stelle in Übungsaufgaben, bei denen ich auch nach Studium meiner Unterlagen nicht auf sinnvolle Lösungsansätze komme. Vielleicht ist ja hier der ein oder andere so nett und kann mir dabei ein bisschen auf die Sprünge helfen. Für die anstehende Klausur wäre es für mich extrem hilfreich, wenn ich die Lösungen zu diesen Aufgaben parat hätte.

1. Es sind Variablen-Deklarationen gegeben: double x,y und ich soll die Java-Ausdrücke, die mathematischen Formeln für folgendes angeben:

5x-y
-------- 
xy+5y

Bruchstrich kann ich hier leider nicht anders machen, dafür hab ich allerdings bisher folgende Lösung: 5*x-y/x*y+5*y . Dürfte stimmen, oder?

Jetzt allerdings das Problem, dass eine andere Aufgabe so aussieht:
e^x
------
3+y

Wie mache ich das hier mit dem ^x?

_____________________________________________________

2. Man soll eine Methode schreiben, die zu vorgegebener Höhe und Radius (mit Nachkommastellen) eines Kreiszylinders dessen Volumen berechnet. (V=pi*r²*h)

______________________________________________________

3. Und folgende Werte soll man als float-Literale schreiben:
200
3,75*10^17
0,00123

Muss man da wirklich nur beispielsweise 0.00123F schreiben, oder gibts da irgendeinen Trick, den ich noch nicht ganz kapiert hab?
_______________________________________________________

Im Voraus schon mal vielen Dank, falls mir hier jemand helfen möchte und helfen kann.


----------



## Kevin94 (5. Jan 2013)

1) Falsch. Es gilt auch in Java die Regel Punkt vor Strich, weswegen deine Lösung mit Klammern so aus sähe:
	
	
	
	





```
5*x- (y/x*y) +5*y
```
. Du musst um Nenner und Zähler Klammern setzen, damit es stimmt.
Die Potenzfunktion gibt es in Java nicht als Operator. Du must die Methode [JAPI]Math#pow(double, double)[/JAPI] verwenden. Für die e-Potenz gibt es auserdem auch die Funktion [JAPI]Math#exp(double)[/JAPI]

2) Ja und? Was ist daran die Frage? Du sollst eine Methode schreiben mit einem double/float als Rückgabewert, der sich anhand einer vorgegebenen Formel aus den Parametern berechnet. Konstanten mit den Werten von PI und E befinden sich ebenfalls in der Klasse Math.

3) Es gibt auch die Exponentialschreibweise: 
	
	
	
	





```
1,23e-3
```
 steht für 
	
	
	
	





```
1,23*10^-3
```
 und das f noch hinten dran damits dann auch ein float und kein double ist: 
	
	
	
	





```
1,23e-3f
```
, 200 entspricht 
	
	
	
	





```
2e2f
```
 und 
	
	
	
	





```
3,75*10^17
```
 entspricht 
	
	
	
	





```
3,75e17f
```
. Analog geht das mit jeder Zahl.


----------



## haui95 (5. Jan 2013)

1. 


```
((5 * x) - y) / ((x * y) + (5 * y))
```

2. 


```
Math.exp(x) / (3 + y)
```

3. 


```
public double vol(double h, double r) {
    return Math.PI * (r * r) * h;                // Math.pow(r, 2) äquivalent zu (r * r)
}
```

4. Das float-Literal "f" immer klein!


```
200.0f
3.75f * Math.pow(10, 17)
0.00123f
```
 

MfG

Hauke


----------



## Thumbnail (10. Jan 2013)

Vielen vielen Dank, das hat mir sehr weiter geholfen!
Habe bei der Suche nach Übungen noch folgende, etwas umfangreichere, Aufgabe gefunden und bräuchte auch hierzu eine Lösung:

Angaben:
maximal 30 Mitarbeiter, Bezahlung in Gehaltsstufen 1-5 (5 höchste Stufe), Leistungen einmal jährlich in 4 Bereichen benotet
1=überdurchschnittlich, 2=durchschnittlich, 3=unterdurchschnittlich
Anhand Noten entschieden, ob MA in höhere Gehaltsstufe oder MA-Gespräch
Entscheidungsregeln:
MA mit min. 3 überdurchschnittlichen Noten → 1 höhere Gehaltsstufe, wenn nicht in 5
MA mit min. 2 unterdurchschnittlichen Noten → Gespräch

Aufgabe:
a) Deklariere Java-Klasse Mitarbeiter, folgende Informationen festgehalten:
name 
gehaltsstufe
noten (Integer-Array für 4 Noten in jeweiligem Bereich)

b) Methode gibAnzahl schreiben, die für 1 Array von Integerzahlen und eine gegebene Zahl n ermittelt, wie oft Zahl n im Array vorkommt.

c) Methode erfasseMitarbeiter schreiben:
- von Tastatur Anzahl der Mitarbeiter einliest, die im Programm verwendet werden sollen
- ein Array (mit dieser Länge) zur Verwendung der MA anlegt
- die einzelnen MA mit Name, Gehaltsstufe + 4 Benotungen von Tastatur einliest und im Array speichert
- komplettes Array als Ergebnis zurückgibt

Ich habe mir bereits einige vergleichbare Aufgaben angesehen, aber vor allem bei Aufgabe b hab ich bisher keinen Ansatz.


----------



## nillehammer (10. Jan 2013)

> b) Methode gibAnzahl schreiben, die für 1 Array von Integerzahlen und eine gegebene Zahl n ermittelt, wie oft Zahl n im Array vorkommt.


Für einen Ansatz Schrittweise vorgehen:
- Methode gibAnzahl schreiben ==> Methodenname "gibAnzahl"
- die für 1 Array von Integerzahlen und eine gegebene Zahl n ==> Also erster Parameter int[] zweiter Parameter int
- ermittelt, wie oft Zahl n im Array vorkommt ==> also Rückgabewert int
Damit hat man schon mal die Signatur zusammen:

```
public static int gibAnzahl(int[] arr, int n) {
...
}
```
- wie oft Zahl n im Array vorkommt ==> muss man sich ja irgendwie merken, also Variable in der Methode:

```
public static int gibAnzahl(int[] arr, int n) {
  // zunächst 0, wird hochgezählt, immer wenn n gefunden
  int anzahl = 0;
  ...
  return anzahl;
}
```
Wie Du ein Array durchläufst und das aktuelle Element des jeweiligen Durchlaufs mit dem int n vergleichst, weißt Du? Wie man das in einem if abprüft auch? Wie man einen int inkrementiert auch? Dann solltest Du in der Lage sein, die drei Punkte durch entsprechenden Code zu ersetzen.


----------

