Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- OO Programmierung (http://www.informatikerboard.de/board/thread.php?threadid=2023)


Geschrieben von neuling96 am 31.12.2014 um 01:59:

 

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?



Geschrieben von neuling96 am 31.12.2014 um 02:27:

 

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)


}



Geschrieben von eulerscheZahl am 31.12.2014 um 07:14:

 

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.



Geschrieben von neuling96 am 31.12.2014 um 07:49:

 

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;
}



Geschrieben von eulerscheZahl am 31.12.2014 um 08:05:

 

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);
}



Geschrieben von neuling96 am 31.12.2014 um 08:14:

 

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



Geschrieben von eulerscheZahl am 31.12.2014 um 08:17:

 

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



Geschrieben von neuling96 am 31.12.2014 um 08:22:

 

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?



Geschrieben von eulerscheZahl am 31.12.2014 um 08:26:

 

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



Geschrieben von neuling96 am 22.05.2015 um 21:14:

 

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?



Geschrieben von neuling96 am 22.05.2015 um 22:36:

 

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?



Geschrieben von neuling96 am 24.05.2015 um 01:32:

 

Gibt es eine Möglichkeit die Methoden von Grinch einfach zutesten?



Geschrieben von eulerscheZahl am 24.05.2015 um 06:30:

 

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.



Geschrieben von neuling96 am 24.05.2015 um 12:31:

 

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)


Forensoftware: Burning Board, entwickelt von WoltLab GmbH