# Eigenen Datentyp schreiben



## chrithym (15. Apr 2006)

Hi Leutz!
Nach langer Suche bei Google und hier über die Suchfunktion, bin ich leider immernoch nicht schlauer.

Kann mir vielleicht jemand einen Tipp geben, wie ich einen eigenen Datentyp verfassen kann.
(ch benötige ein Datentyp, der größer ist als LONG.)

Danke schonmal für eure Tipps!

LG


----------



## RawBit (15. Apr 2006)

ich glaub es gibt nicht längeres als long :?


----------



## kama (15. Apr 2006)

Hi,



			
				Hackl hat gesagt.:
			
		

> ich glaub es gibt nicht längeres als long :?



Schon mal BigInteger angeschaut ?


```
public static void main(String[] args) {
		Long l = new Long(Long.MAX_VALUE);
		System.out.println("  i=" + l);
		BigInteger bi = new BigInteger ("1");
		BigInteger b9 = bi.shiftLeft(90);
		System.out.println(" b9=" + b9);
		BigInteger b10 = b9.add(b9);
		System.out.println("b10=" + b10);
	}
```

MfG
Karl Heinz Marbaise


----------



## RawBit (15. Apr 2006)

achja!! stimmt ja, bigInteger!! *lol*

da ich long ja so gut wie nie brauche hab ich das schon total vergessen, einmal im java-buch durchgelesen und das wars... 

voll peinlich...


----------



## chrithym (15. Apr 2006)

Hackl hat gesagt.:
			
		

> ich glaub es gibt nicht längeres als long :?



Aber wie kann ich denn einen eigenen Datentyp entwerfen?

LG


----------



## kama (16. Apr 2006)

Hi,

wenn Du denn einen eigenen Datentyp entwerfen willst solltest Du zuerst einmal festlegen, was der Datentyp denn alles können soll? 

Wertebereiche? Operationen? etc.

und dann kann man mal weiter überlegen, wie man sowas dann realisiert....


----------



## mithandril (16. Apr 2006)

das ist genau wie meine anfrage aus dem allgemeinen (hab ich nur leider falsch geklickt) also ich bräucht einen der zahlen darstellen kann (quaddrillionen will unser prof) und wir sollen keine vorhandenen benutzen ... der typ soll addieren, subtrahieren etc. können ... hab es versucht in dem ich den typ dobule abgeändert hab aber da sagt er mit z.b. bei max_value an das das nicht kompatibel ist. jmd ne idee??


----------



## byte (16. Apr 2006)

Einen Datentyp erzeugen heisst nix anderes als eine Java Klasse zu schreiben, die entsprechend eine beliebig große Zahl repräsentiert. Du musst Dir halt überlegen, wie Du eine beliebig große Zahl darstellen kannst. Beispielsweise könntest Du die Zahl in n gleichgroße Integers aufteilen, die Du dann z.B. in nem Array oder einer Collection speicherst. Musst Dir dann natürlich noch überlegen, wie Du die Methoden zum Addieren, Subtrahieren etc implementierst und ne toString() zur vernünftigen Darstellung der Zahl brauchst Du auch.


----------



## mithandril (16. Apr 2006)

das war meine erst idee ...
aber es muss ja auch anders gehen ... da die klassen double und float ja auch nur aus numbers hergeleitet wurden ...


----------



## byte (16. Apr 2006)

Du kennst aber schon den Unterschied zwischen primitiven und komplexen Datentypen? Double, Integer und Co. sind bloß Wrapper für die primitiven Typen. Die reichen für Dich halt nicht aus. Du musst Dir schon einen komplexen Typ erzeugen.

Dein Typ kann bei Bedarf natürlich auch von Number erben, wenn Du Dich dann besser fühlst. :bae:


----------



## mithandril (16. Apr 2006)

> Für die Guthaben müssen Sie einen eigenen Datentyp entwickeln. Ein 64Bit Long reicht hierfür nicht.
> Greifen Sie nicht auf existierende Klassen zurück, sondern entwickeln Sie eine eigene Klasse.



Wenn da nicht stehen würde "greifen sie nicht auf existierende zurück" würde ich das ja auch machen mit dem aufteilen in integer...


----------



## byte (16. Apr 2006)

Lesen, nachdenken, verstehen. 

Du musst keine existierenden Klassen verwenden, wenn Du das ganze (wie oben beschrieben) mit den primitiven Datentypen und einem Array löst.


----------



## Leroy42 (18. Mai 2006)

Lehrer hat gesagt.:
			
		

> "greifen sie nicht auf existierende zurück"



Das wäre doch mal eine coole Aufgabenstellung:


			
				Hirni hat gesagt.:
			
		

> Entwerfen Sie ein Klassendesign und implementieren Sie die notwendigen Methoden um
> ...
> abzubilden.
> 
> Aber verwenden Sie keine existieren Datentypen  :noe:


----------



## charger (22. Mai 2006)

Hallo. Ich möchte auch einen Datentyp schreiben. Ich habe auch schon leichte Ansätze. 
Es soll ein Biglong werden, der addieren, subtrahieren und multiplizieren kann (reicht für meine Bedürfnisse). 
Hierfür werde ich drei longs nehmen.  Ich werde nun so vorgehen, dass in meiner "Money" Klasse (so heißt der Datentyp) methoden für add, sub und mul sind. Angefangen beim Addieren. Ich habe also drei Longs z.B. High, Middle, Low: wobei high und middle für die Vorkommastellen und low für die Nachkommastellen sind/ist. Nun prüft das Programm als erstes, ob die zahl die man bekommt, größer als middle ist. Ist dies der fall, muss man die Zahl aufteilen. Also den Rest, der über bleibt auf high addieren. Weiter bin ich noch nicht. Melde mich, wenn ich was neues habe.

MFG


----------

