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

Informatiker Board » Themengebiete » Praktische Informatik » Casting in Java » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Casting in Java
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
donvito donvito ist weiblich
Mitglied


images/avatars/avatar-3.jpg

Dabei seit: 04.01.2007
Beiträge: 41
Herkunft: Freiburg

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

Hallo ihr Lieben,

das Casting in Java bringt mich bald um den Verstand, hier mein Programm:

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:
import java.util.*;
import java.io.*;


public class Point2D {
	private Vector x = new Vector();
	private Vector y = new Vector();
	
	private InputStreamReader isr = new InputStreamReader(System.in);
	private BufferedReader br = new BufferedReader(isr);

	
	public void readIn()throws IOException

	{

			x.addElement(br.readLine());
			x.addElement(br.readLine());
			y.addElement(br.readLine());
			y.addElement(br.readLine());
		
	}
	public double distance(){
		Double x1, x2, y1, y2;
		
		Enumeration en = x.elements();		
		x1 = (Double) en.nextElement();
		x2 = (Double) en.nextElement();		
		en = y.elements();
		y1 = (Double) y.elementAt(0);
		y2 = (Double) y.elementAt(1);	
		
		double xx = x2.doubleValue() - x1.doubleValue();
		double yy = y2.doubleValue() - y1.doubleValue();
		

		double distance = Math.sqrt(Math.pow(xx, 2) + Math.pow(yy, 2));
		return distance;
		}
	
	
	public static void main(String arg[])throws IOException {
		Point2D p = new Point2D(); 
		System.out.println("Bitte geben Sie Ihre Punkte ein!");
		p.readIn();
		System.out.println(p.distance());
		
		
	}
	

} 


Ich kriege folgenden Fehler: Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Double
at Point2D.distance(Point2D.java:28)
at Point2D.main(Point2D.java:47)


Laut unserem Professor muss sich aber ein Object einfach so casten lassen. Beispiel aus der Vorlesung:
code:
1:
2:
3:
4:
5:
Enumeration en = v.elements();
while (en.hasMoreElements()) {
String s = (String) en.getNextElement();
System.out.print(s);
} 


Nu verstehe ich nicht was der Unterschied ist. Wieso gehts bei mir nicht?

Gruß donvito

__________________
Meine Moviebase

Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von donvito: 24.03.2007 19:34.

24.03.2007 19:29 donvito ist offline E-Mail an donvito senden Homepage von donvito Beiträge von donvito suchen Nehmen Sie donvito in Ihre Freundesliste auf
Tobias
Routinier


Dabei seit: 18.09.2006
Beiträge: 324

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

Tja, das hast du völlig falsch verstanden mit dem Casten.

Jedes Objekt in Java ist vom Typ "Object" abgeleitet. D.h. man könnte z.B. einen String so erstellen:

code:
1:
Object o = new String("Hallo");


Nun kann es aber sein, dass du eine String-Methode aufrufen willst, wie z.B. charAt(0). Das geht mit o nicht, weil o eine Object-Referenz ist. Da du aber weißt, dass o auf einen String referenziert, kannst du o nach String casten:

code:
1:
char c = ((String)o).charAt(0);


Was nicht geht ist einfach einen String in einen Double umzucasten, weil diese Typen nicht voneinander abgeleitet worden sind.

Dafür gibt es andere Methoden. Z.B.

code:
1:
x1 = new Double((String)en.nextElement());
25.03.2007 18:07 Tobias ist offline E-Mail an Tobias senden Beiträge von Tobias suchen Nehmen Sie Tobias in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Casting in Java