double in Object

Status
Nicht offen für weitere Antworten.

Fellkneul

Mitglied
hallo,

ich hab nen programm geschrieben, welches einen einfachen Taschenrechner darstellt. Ich hab nen Object Array darin und wollte nen double darin speichern. Das funkionierte auch auf meinem Eclipse 3.4.0. Aber ich lern die Sprache gerade auch in der Schule und wollte das Programm dort auch testen. Dort haben wir Eclipse 3.2.0. Das Programm lief bei mir zuhause einwandfrei. In der Schule jedoch kriegt ich bei dem Versuch ein double in einem Object Array zu speichern den Fehler (ich bin mir leider nich mehr ganz genau sicher) "Can't convert from double to Object"

Ich versteh nicht ganz:

1. Müsste es nicht eigentlich möglich sein alles (Objekte und primitive Datentypen) in einem Object Array speichern zu können?
2. Wieso gibt mir überhaupt das eine Eclipse nen Fehler aus und das andere nicht?

vielen Dank im vorraus für jede Hilfe,

gruß,
Fellkneul
 

Illuvatar

Top Contributor
Das liegt vermutlich an unterschiedlichen Java-Versionen. Du kannst nämlich generell keinen primitiven Datentyp in ein Object[] tun. Allerdings gibt es seit Java 5 einen Mechanismus namens Autoboxing - da kannst du das so schreiben, und der Compiler ergänzt dann implizit noch eine Umwandlung in ein passendes Objekt - in diesem Fall in ein java.lang.Double.
 

Fellkneul

Mitglied
d.h. wahrscheinlich würde es reichen meinen code

Code:
double [] zahlen = new double[stringSplit.length];
Object [] teile = new Object[stringSplit.length];
...		
	teile[i] = zahlen[i];

in


Code:
double [] zahlen = new double[stringSplit.length];
Object [] teile = new Object[stringSplit.length];
...		
	teile[i] = Double.valueOf(zahlen[i]);

umzuwandeln, oder?
 

Landei

Top Contributor
Da wo dein Original-Code nicht funktioniert, ist wahrscheinlich ein uraltes Java (vor 1.5) installiert, und ich wollte deshalb vorschlagen, es mal upzudaten, sonst hast du dauernd solche Problemchen.

Wenn Java ordentlich installiert ist, reicht es, das hier in der DOS-Konsole zu tippen, um die aktive Version rauszubekommen:
java -version
 

Fu3L

Top Contributor
Daran liegt es wahrscheinlich nicht. Ich hatte das auch, als ich Java-Generics verwenden wollte, trotz installiertem jdk 1.6. Du selektierst dein Projekt, gehst oben in der Leiste von Eclipse auf "Run" --> "Properties", klickst auf "Java Compiler" (nicht auf das Plus davor), machst nen Haken vor "Enable project specified setting" und stellst die Compilerversion ein, mit der Eclipse dein Projekt überwachen soll.
 

ARadauer

Top Contributor
Ich hab nen Object Array darin und wollte nen double darin speichern
ich seh hier das eigentliche problem

ich muss ehrlich sagen, dass ich noch nie einen double wert als objekt in einem array gehalten habe... und ich hab schon sehr viel java code gschrieben!

warum willst du das machen? hast du verschiedene datentypen die die gemeinsam halten möchtest? zb name (String), alter (int)? dann mach ein objekt! zb Person
 

Oli

Top Contributor
double und auch int sind primitive Datentypen und keine Objekte. Somit ist es auch völlig korrekt, dass hier der Kompiler meckert.

Diese primitiven Datentypen haben ihre Wrapperklassen, namlich Double (Integer).

Was funktionieren würde ist Object = Double.

Wobei ARadauer völlig recht hat. Das ist in höchstem Maße unsinnig.

Viele Grüße Oli
 

Fu3L

Top Contributor
@ARadauer: Er möchte ja wahrscheinlich einmal Zahlen und zum anderen die Rechenzeichen dareinspeichern, was man fürn Taschenrechner halt so braucht. (Ob das so sinnig ist, hab ich keine Lust drüber nachzudenken^^), deswegen muss er wohl beides dareinspeichern (man könnte natürlich die Zahlen auch als String speichern und dann Double.parseDouble(String s) aufrufen).

@Oli: Illuvatar hatte ja vom Autoboxing geschrieben, das wäre ja im Prinziep das was du vorschlägst und das schien ja auch zu klappen, mit einer vernünftig eingestellen Eclipse-Version...
 

Oli

Top Contributor
Nun Eclipse badet den Fehler bei der Programmierung aus, in dem der Compiler einen pimitiven Datentyp über seine Wrapperklasse in ein Objekt umwandelt - Autoboxing eben. Ob das sinnvoll ist, nun darüber kann man streiten, es ist bequem.

Dass aber:

Object = double;

vom Prinzip her falsch ist, ist wohl unbestritten.
 

ARadauer

Top Contributor
deswegen muss er wohl beides dareinspeichern
um was damit machen? wir sind hier in der objekt orientierten programmierung, objekt ist so viel wie dings,

ich halte dings in einer liste dingsen um dann dings und dings zu dingsen und sie auf ein anderers dings hinzuzudingsen... hä?

das nenn ich ein ansatz bzw architektur problem...

audrücke in einer liste halten, die wiederum aus einem oder mehrern werten und einer operation bestehen, den ausdruck ann ich auswerten/ausführen, dadurch lifert er mit ein ergenis zurück, dass ich wiederum in anderen ausrücken verwenden kann, wobei für das verhalten die konkrete implementierung der operation selber zuständig ist usw.... ist schon ein besserer ansatz....


problem: lehrer die keine ahnung haben, geben schülern immer diese taschenrechner beispiel...
fakt: ein sinnvolles taschenrechner programm ist eine ziehmliche herausforderung, polymorpie, command pattern, strategy pattern.....
 

ARadauer

Top Contributor
warum nennt mich hier immer jemand Adenauer! i ;-)
ich heiße Andreas Radauer
ch will eine namensänderung, in ILoveBeer! :D
 

Oli

Top Contributor
YouLoveBeer - I too....

Kann ich bestätigen, ich habe einen "Taschenrechner gebaut. Über 30 Klassen und über 20000 Zeilen Code...

Aber sowas kann man doch von einem Schüler wohl erwarten, oder? ;-)
 

Fu3L

Top Contributor
Oli hat gesagt.:
Nun Eclipse badet den Fehler bei der Programmierung aus, in dem der Compiler einen pimitiven Datentyp über seine Wrapperklasse in ein Objekt umwandelt - Autoboxing eben. Ob das sinnvoll ist, nun darüber kann man streiten, es ist bequem.

Dass aber:

Object = double;

vom Prinzip her falsch ist, ist wohl unbestritten.


Ich würd mich ehrlcih gesagt auch nich aufs Autoboxing verlassen :wink: und als Tipp für die Zukunft ist es sicher gut, das zu vermeiden. Aber bevor er das Programm (was vllt sehr komplex ist) umschreibt, erklär ich lieber wie mans in Eclipse umstellen kann und dass es so möglich ist.

@ARadauer: Genau das ist der Punkt, es ist wirklich schwirieger als man erwarten würde einen solchen Taschenrechner zu programmieren (habs letztens auch mal probiert, hat 3x so lange gedauert wie eingeplant^^ (An der GUI hats natürlich nich gelegen)). Ich schätze mal, dass er das ungefähr so plant (ich geh mal davon aus, dass die Zahlen auch als String gespeichert sind (würd ich so machen, wenn ich das alles in ein Array packen würd):

Code:
for(int i = 0; i < array.length; i++) {

if(array[i].equals("+")) {

ergebnis = String.valueOf(Double.parseDouble(array[i-1]) + Double.parseDouble(array[i+1]));

}

//usw...

}

//Werte ausm Array löschen (ne List wär wohl besser) und ergebnis einspeichern

Und das ist doch schon relativ praktisch so, find ich (bin jezz auch noch nich sooo ein alter Hase im Java-Programmieren :wink: )
 

ARadauer

Top Contributor
ich find das ist ein gutes beispiel für einen rechner ;-) lassen wir doch javascript die arbeit machen...

Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;


public class Test {
	
	public static void main(String[] args) throws IOException {
		BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
		
		System.out.print("Formel eingeben: ");
		String formel = r.readLine();
	        ScriptEngineManager factory = new ScriptEngineManager(); 
	        ScriptEngine engine = factory.getEngineByName("JavaScript"); 
	          
	        
	        try {
				engine.eval("var v = eval('"+formel+"')");
				double b =(Double) engine.get("v"); 

		        System.out.println("Ergebnis: "+b); 
			} catch (ScriptException e) {
				System.out.println("Das war wohl nix");
				e.printStackTrace();
			}        
	        
	    } 

		
	}
 

Fellkneul

Mitglied
Landei hat gesagt.:
Da wo dein Original-Code nicht funktioniert, ist wahrscheinlich ein uraltes Java (vor 1.5) installiert, und ich wollte deshalb vorschlagen, es mal upzudaten, sonst hast du dauernd solche Problemchen.

Wenn Java ordentlich installiert ist, reicht es, das hier in der DOS-Konsole zu tippen, um die aktive Version rauszubekommen:
java -version

@Landei: wie gesagt, ich hab ja das neuste Java, meine Schule ist nur leider nicht auf dem neusten Stand

Fu3L hat gesagt.:
@ARadauer: Er möchte ja wahrscheinlich einmal Zahlen und zum anderen die Rechenzeichen dareinspeichern, was man fürn Taschenrechner halt so braucht. (Ob das so sinnig ist, hab ich keine Lust drüber nachzudenken^^), deswegen muss er wohl beides dareinspeichern (man könnte natürlich die Zahlen auch als String speichern und dann Double.parseDouble(String s) aufrufen).

@Oli: Illuvatar hatte ja vom Autoboxing geschrieben, das wäre ja im Prinziep das was du vorschlägst und das schien ja auch zu klappen, mit einer vernünftig eingestellen Eclipse-Version...

richtig... genau das is mein Problem

ich hab vielleicht nen bisschen untertrieben mit kleiner rechner.

ich wollte nen rechner baun, das komplexe rechnungen ausführen kann und dabei objekte wie brüche, unechte brüche, wurzeln, exponenten, log, sin, cos, tan etc. einbauen und dazu noch das ergebnis als mathematisch korrekt ausgeben (also z.B. 2-Wurzel(3) statt irgent so ner kommazahl...

aber die Frage ist erstmal geklärt, vielen Dank
 

ARadauer

Top Contributor
ich wollte nen rechner baun, das komplexe rechnungen ausführen kann und dabei objekte wie brüche, unechte brüche, wurzeln, exponenten, log, sin, cos, tan etc. einbauen und dazu noch das ergebnis als mathematisch korrekt ausgeben (also z.B. 2-Wurzel(3) statt irgent so ner kommazahl...
ist sicher eine große herausforderung, aber wenn mans durchzieht, kann man einiges dabei lernen... viel spaß damit, ich würd mir auf jeden fall mal das strategy pattern ansehen (brüche, unechte brüche, wurzeln, exponenten, log, sin, cos, tan etc.) ideal....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Object in double? Java Basics - Anfänger-Themen 3
L Datentypen Object zu double zu int konvertieren Java Basics - Anfänger-Themen 6
M object cast auf double Java Basics - Anfänger-Themen 2
T Aus object Array Double Werte ziehen Java Basics - Anfänger-Themen 10
H Datentypen TreeMap<Double, Object> - negative Werte? Java Basics - Anfänger-Themen 4
O Object nach Double casten Java Basics - Anfänger-Themen 11
P Typumwandlung Object in double Java Basics - Anfänger-Themen 12
C object to double Java Basics - Anfänger-Themen 6
W Double or Float zusammenrechnen Java Basics - Anfänger-Themen 15
I Review von euch erwünscht, double Rechnung falsch Java Basics - Anfänger-Themen 34
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
krgewb Double mit zwei Nachkommastellen Java Basics - Anfänger-Themen 2
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
Lion.King Fehler in double und int Java Basics - Anfänger-Themen 7
F java: incompatible types: possible lossy conversion from double to int Java Basics - Anfänger-Themen 1
J Double Variable und Addition Java Basics - Anfänger-Themen 2
F Double Ausgabe nicht wissenschaftlich Java Basics - Anfänger-Themen 16
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
Kotelettklopfer Variablen Double zwingen Ganzzahlen mit 2 Nachkommastellen auszugeben Java Basics - Anfänger-Themen 10
A possible lossy conversion from double to int Java Basics - Anfänger-Themen 5
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
N The method setSaldo(double) in the type Konto is not applicable for the arguments (int, int) Java Basics - Anfänger-Themen 2
C Konvertierung des int typs in den double typ für die Ausgabe mit Nachkommastellen Java Basics - Anfänger-Themen 4
V Erste Schritte Die Nuller bei double NICHT abschneiden Java Basics - Anfänger-Themen 4
Y Datentypen Double Division ungenau Java Basics - Anfänger-Themen 45
L Datentypen Rechnen und abrunden mit double Java Basics - Anfänger-Themen 7
M Writer für unterschiedliche Obj/inbt/double erstellen? Java Basics - Anfänger-Themen 1
F Character umwandeln als Double Werte Java Basics - Anfänger-Themen 8
M Double Wert nach n abschneiden ohne zu runden Java Basics - Anfänger-Themen 1
D Methode mit Übergabe double und Rückgabe String Java Basics - Anfänger-Themen 2
P Hilfe bei Double Java Basics - Anfänger-Themen 1
B Rückgabe von zwei Werten: String und double Java Basics - Anfänger-Themen 14
B HQL / Hibernate, GroupBy und Ausgabe als Double Java Basics - Anfänger-Themen 1
M Konvertierung String -> double Java Basics - Anfänger-Themen 8
A Double Scan eingrenzen Java Basics - Anfänger-Themen 2
O Erste Schritte Potenzmethode per double Java Basics - Anfänger-Themen 11
A Random Double mit Math.round() runden? Java Basics - Anfänger-Themen 1
H Double oder nicht? Java Basics - Anfänger-Themen 7
J int array als double array ausgeben Java Basics - Anfänger-Themen 9
M Int und Double in Array speichern Java Basics - Anfänger-Themen 1
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
B Hashing (verkettet/double) Java Basics - Anfänger-Themen 0
L Konvertieren von String zu double?! Java Basics - Anfänger-Themen 6
V Operatoren Warum kommt bei double bei den Nachkommastellen irgendwann eine 2?! (1.20000000000002) Java Basics - Anfänger-Themen 5
geekex Double zu String umwandeln in einer Methode Java Basics - Anfänger-Themen 28
E Bruch erstellen - Von Int zu Double Ergebnis Java Basics - Anfänger-Themen 24
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
I Double.ParseDouble 2 Textfelder Java Basics - Anfänger-Themen 1
M JComboBox feste double Werte zu ordnen Java Basics - Anfänger-Themen 8
P Datentypen Kann ich bei double Komma statt Punkt eingeben? Java Basics - Anfänger-Themen 14
E Von Double zu Long umwandeln Java Basics - Anfänger-Themen 9
L Bei falscher Eingabe soll NaN zurückgegeben werden, Rückgabetyp jedoch double Java Basics - Anfänger-Themen 3
V Variablen Double später deklarieren Java Basics - Anfänger-Themen 7
V double = 1.34823e-300 Java Basics - Anfänger-Themen 5
W double*double error Java Basics - Anfänger-Themen 4
kilopack15 Mehr Nachkommastellen mit double Java Basics - Anfänger-Themen 14
T Input/Output Double und String als Eingabe einlesen Java Basics - Anfänger-Themen 9
J [Rundungsfehler bei Double] Grundkurs Java: Checke Lösungsweg nicht Java Basics - Anfänger-Themen 1
W In einer Function<Double, Double> undefinierte Rechenoperationen abfangen? Java Basics - Anfänger-Themen 3
T set Metode für Double Java Basics - Anfänger-Themen 6
Hijo2006 String to Double Java Basics - Anfänger-Themen 4
K Double Wert runden und in Int umwandeln Java Basics - Anfänger-Themen 7
A Kommafehler beim double einleseen korrigieren Java Basics - Anfänger-Themen 2
K Operatoren The Operator * is undefined for the argument type(s) double, String Java Basics - Anfänger-Themen 4
das_leon String zu double konventieren Java Basics - Anfänger-Themen 1
K Genauer als Double? Java Basics - Anfänger-Themen 4
T Double.parseDouble(args[0]) Java Basics - Anfänger-Themen 13
A Java Ungenauigkeit double Java Basics - Anfänger-Themen 6
B Methoden The method mirror(double[]) in the type Convolution is not applicable for the arguments (double) Java Basics - Anfänger-Themen 8
C Typumwandlung von int<-->double Java Basics - Anfänger-Themen 6
M Double Wert auf 2 Kommastellen runden Java Basics - Anfänger-Themen 2
S Regelabfragen aus Double-Array Java Basics - Anfänger-Themen 2
A Erste Schritte Double Wert aus String zu int Java Basics - Anfänger-Themen 2
P Rückgabe erflogt nicht als Double Java Basics - Anfänger-Themen 2
K Erste Schritte switch - Warum sind long/float/double/... nicht erlaubt? Java Basics - Anfänger-Themen 5
P scanner ein Double einlesen Java Basics - Anfänger-Themen 10
T Java double berechnung fehler Java Basics - Anfänger-Themen 2
S double[x] , double[y] zu Point[] points kopieren? Java Basics - Anfänger-Themen 15
G double in float umwandeln Java Basics - Anfänger-Themen 2
F double[] an andere Methode übergeben Java Basics - Anfänger-Themen 1
B Datentypen Test float und double speichern Zahlen nur ungefähr Java Basics - Anfänger-Themen 4
S Datentypen double - kommastellen abschneiden Java Basics - Anfänger-Themen 6
M int double int double Graph Java Basics - Anfänger-Themen 3
K ArrayList<Double> --> double[] array Java Basics - Anfänger-Themen 5
Z Double in komma und Punkt akzeptieren -> Robusteeingabe Java Basics - Anfänger-Themen 7
S Double und Gleitkommazahlen mit JUnit testen Java Basics - Anfänger-Themen 7
B Datentypen Multiplzieren mit double wird ungenau Java Basics - Anfänger-Themen 4
K Von einem Double wert nur die Zahl vor dem Komma verwenden Java Basics - Anfänger-Themen 9
F Double neu formatieren mit NumberFormat Java Basics - Anfänger-Themen 2
M Double-Ausgabe in JTextField fehlerhaft Java Basics - Anfänger-Themen 2
T Problem mit double-Formatierung Java Basics - Anfänger-Themen 3
M Double Zahl in Grad Zahl Java Basics - Anfänger-Themen 7
M Datentypen Ergebniss- Double to String- wird nicht angezeigt Java Basics - Anfänger-Themen 13
S Double mithilfe eines Scanners so einlesen, dass ich damit rechnen kann Java Basics - Anfänger-Themen 4
M Die Double-Variable rundet? Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben