Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » OO Programmierung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): « vorherige 1 [2] Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen OO Programmierung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

public class Grinch {
private Haus[] stadt;
private Geschenk[] geklauteGeschenke = new Geschenk[0];
private int restzeit;

public Grinch(Haus[] stadt, int restzeit) {
this.restzeit = restzeit;// müssste hier nicht 80 stehen?


mit

stadt[h].baum habe ich zugriff auf den baum array von stadt[h], aber geht auch der
befehl stadt[h].baum.length?

2tes

stadt[h].ausraeumen.length // geht diese Befehl durch?
31.12.2014 01:59
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zuruck in seinem Versteck, will der Grinch seine geklauten Geschenke zahlen.
Implementieren Sie in der KlasseGrinch eine neue Methode
inventur()
, die die Anzahl und das
Gesamtgewicht der erbeuteten Geschenke auf der Standardausgabe ausdruckt

was meint man mit Standardausgabe?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
public int inventur(){
int sum =0;
for (int i=0; i<geklauteGeschenke.length; i++)
if (!(geklauteGeschenke[i]==0){
 sum++;
	}
}
System.out.println(sum)// ist mit println ausdrucken gemeint? 
System.out.println (geklauteGeschenke.gewicht)


}
31.12.2014 02:27
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ja, System.out ist die Standardausgabe, wird auch gerne Console genannt.
Und was ist geklauteGeschenke.gewicht? Das musst du auch aufsummieren, genau wie die Anzahl.

if (!(geklauteGeschenke[i]==0) geht vielleicht in C++, aber nicht in Java. if (geklauteGeschenke[i] !0 null) prüft, ob dsa Geschenk vorhanden ist.

__________________
Syntax Highlighting fürs Board (Link)
31.12.2014 07:14 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

import java.util.Random;


public class Geschenk {
private int [] baum;
private int [] baum
/**
* Das Gewicht des Geschenks in Gramm
*/
public int gewicht;

/**
* Konstruktor für Geschenk:
* Erzeugt ein neues Geschenk mit zufällig gewählter Größe
*/
public Geschenk() {
Random r = new Random();
this.gewicht = r.nextInt(901) + 100; // Zufallszahl zwischen 100 und 1000
}

da geklautesGeschenk ein objeckt von Geschenk ist, dachte ich man mit
geklautesGeschenk.gewicht darauf zurückgreifen

for (int h = 0; h < stadt.length; h++) {
Geschenk [] y = stadt[h].ausraeumen();
restzeit -= (y.length+9)/10;

if(restzeit >= 0) {
for (int i = 0; i < y.length; i++) {

sum += y.length;
}
31.12.2014 07:49
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Du kannst auch auf das Gewicht zugreifen, aber du musst jedes Gewicht einzeln wieder, nicht den ganzen Sack auf einmal.

In C# geht das mit int sum = geschenke.Select (x => x.gewicht).Sum ();, aber in Java ist mir da nichts bekannt.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public int inventur() {
    int anzahl = 0;
    int gesamtgewicht = 0;
    for (int i = 0; i < geklauteGeschenke.length; i++) {
        if (geklauteGeschenke[i] != null) {
            anzahl++;
            gesamtgewicht += geklauteGeschenke[i].gewicht;
        }
    }
    System.out.println("Anzahl: " + anzahl);
    System.out.println ("Gesamtgewicht: " + gesamtgewicht);
}


__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von eulerscheZahl: 31.12.2014 08:06.

31.12.2014 08:05 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

if (geklauteGeschenke[i] != null)

was ist der unterschied zwischen

if (!(geklauteGeschenke[i]==0))

und

if (!(geklauteGeschenke[i]==null))



ich dachte dabei !(a==b) bedeutete das gleiche wie a!=b
31.12.2014 08:14
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das ist richtig. Aber 0 ist nicht null. 0 ist eine Zahl, null sagt, dass das Objekt nicht exisitert.

__________________
Syntax Highlighting fürs Board (Link)
31.12.2014 08:17 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

sry, dass ich öfter Sachen nochmal fragen muss, aber

public class Main {
public static void main(String[]args)

wie erstellt man eine main??

2tes
stadt[h].baum habe ich zugriff auf den baum array von stadt[h], aber geht auch der
befehl stadt[h].baum.length?

stadt[h].ausraeumen.length // geht diese Befehl durch?
31.12.2014 08:22
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ohne main hast zu zwar Funktionen, aber keinen der sie aufruft. Das Programm startet dann einfach nicht.

Wenn du auf ein Array zugreifen kannst, kannst du auch die Länge abfragen.

Gilt auch für das Haus, muss aber heißen stadt[h].ausraeumen().length

__________________
Syntax Highlighting fürs Board (Link)
31.12.2014 08:26 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich möchte einen Junit Test durchführen (noch nie zuvor gemacht) für die Klasse Haus und deren Methoden.

Die Schwierigkeit besteht daran, dass Haus zufällig erstellt wird und somit das überprüfen der einzelnen Methode erschwert, also versuch ich mit der Mock Implementierung.


Hier der erste versuch

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:

import static org.junit.Assert.*;

import org.junit.Test;


public class HausTest {
  public static class MockGeschenkTest extends Geschenk {
	  public int groeße;
	
	 public MockGeschenkTest ( int x) {
		 super();
		 this.groeße=x;
	 }
  }
	 public static class MockHausTest extends Haus {
	
	private MockGeschenkTest[] baum={new MockGeschenkTest(1),new MockGeschenkTest(2)} ; // Geschenke unter dem Baum
	private MockGeschenkTest[] schrank={new MockGeschenkTest(2),new MockGeschenkTest(3)}; // Geschenke im Schrank
	private MockGeschenkTest[] tisch={new MockGeschenkTest(2),new MockGeschenkTest(3)};
	 // Geschenke auf dem Tisch
	
	public MockHausTest (){
		super();
	}
	public int anzahlGeschenke() {
		return baum.length + schrank.length + tisch.length;
	}
	
	@Test
	public void testAnzahlGeschenke() {
		MockHausTest h = new MockHausTest();
		assertEquals(6,h.anzahlGeschenke());
	}
	
	public MockGeschenkTest[]  ausraeumen() { 
		MockGeschenkTest[] klau = new MockGeschenkTest[baum.length + schrank.length + tisch.length];
		for (int i = 0; i < baum.length; i++) {
			klau[i] = baum[i];
		}
		for (int y = 0; y < schrank.length; y++){
			klau[y + baum.length] = schrank[y];
		}
		for (int z = 0; z < tisch.length; z++){
			klau[z + schrank.length + baum.length] = tisch[z];
		}
		baum = null;
		schrank = null;
		tisch = null;
		return klau;
	}
}
	
	@Test
	public void testAusraeumen() {
		MockHausTest h = new MockHausTest();
		MockGeschenkTest[] y=  h.ausraeumen();
		MockGeschenkTest [] z = {new MockGeschenkTest(1),new MockGeschenkTest(2),new MockGeschenkTest(2),new MockGeschenkTest(3),new MockGeschenkTest(2),new MockGeschenkTest(3)};
		
		assertArrayEquals(y, z);
	}
	


public void testAusraeumen() {
schlägt fehl ?


y müsste doch gleich z sein?
22.05.2015 21:14
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
 public static class MockHausTest  {
	
	private MockGeschenkTest[] baum; // Geschenke unter dem Baum
	private MockGeschenkTest[] schrank; // Geschenke im Schrank
	private MockGeschenkTest[] tisch;
	 // Geschenke auf dem Tisch
	
	public MockHausTest (MockGeschenkTest[] x, MockGeschenkTest [] y){
		
	this.baum= x;
	this.schrank=y;
	}




code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:

 @Test
		public void testAusraeumen() {
		MockGeschenkTest w = new MockGeschenkTest(1);
		MockGeschenkTest p = new MockGeschenkTest(2);
		
		MockGeschenkTest []z = {w,p};
		MockHausTest h = new MockHausTest(z,z);
			MockGeschenkTest[] y=  h.ausraeumen();
		 
			MockGeschenkTest [] za = {w,p,w,p};
			
			assertArrayEquals(y, za);
		}

}




ok damit scheint es zu funktionieren .

Meine Frage, wäre geht es einfacher?
22.05.2015 22:36
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Gibt es eine Möglichkeit die Methoden von Grinch einfach zutesten?
24.05.2015 01:32
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Könntest du den kompletten Code bereitstellen (bevorzugt als .zip)?
Ich habe keine Lust, die alten Beiträge nach dem jeweils neuesten Code einer Klasse durchzugehen, zumal der Code ohnehin nicht vollständig ist (MockHausTest(z,z) wird nicht gehen, weil es keinen Konstruktor mit diesen Argumenten gibt).

Und ein super(); kannst du dir sparen, wenn du keine Parameter übergibst.

__________________
Syntax Highlighting fürs Board (Link)
24.05.2015 06:30 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe doch

public MockHausTest (MockGeschenkTest[] x, MockGeschenkTest [] y){

und übergebe
MockGeschenkTest []z = {w,p};
MockHausTest h = new MockHausTest(z,z);

dürfte das nicht gehen?


Im Anhang eine die Datei (in eclipse)

Dateianhang:
zip JavaGrinch.zip (8 KB, 498 mal heruntergeladen)
24.05.2015 12:31
Seiten (2): « vorherige 1 [2] Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » OO Programmierung