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

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Integerwerte in einer ArrayList casten » 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 Integerwerte in einer ArrayList casten
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

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

Folgender Code funktioniert nicht:

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:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
package WissensbasierteSysteme_3;

import java.util.ArrayList;
import java.util.Arrays;

public class EA3 {
	ArrayList[] group = new ArrayList[8];
	
	public EA3(){
	int[] arrayE= {1,1,0,1,1,1,1,1,1,0};
	ArrayList alE = new ArrayList(Arrays.asList(arrayE));
	group[0] = alE;
	int[] arrayD= {1,0,1,1,0,1,1,0,0,0};
	ArrayList alD = new ArrayList(Arrays.asList(arrayD));
	group[1] = alD;
	int[] arrayR= {0,1,1,0,1,1,0,1,0,0};
	ArrayList alR = new ArrayList(Arrays.asList(arrayR));
	group[2] = alR;
	int[] arrayN= {1,1,0,1,1,0,1,0,0,1};
	ArrayList alN = new ArrayList(Arrays.asList(arrayN));
	group[3] = alN;
	int[] arrayEuR= {0,1,0,0,1,1,0,1,0,0};
	ArrayList alEuR = new ArrayList(Arrays.asList(arrayEuR));
	group[4] = alEuR;
	int[] arrayEuN= {1,1,0,1,1,0,1,0,0,0};
	ArrayList alEuN = new ArrayList(Arrays.asList(arrayEuN));
	group[5] = alEuN;
	int[] arrayER= {0,1,0,0,1,1,0,0,0,0};
	ArrayList alER = new ArrayList(Arrays.asList(arrayER));
	group[6] = alER;
	int[] arrayEn= {1,1,0,0,0,0,1,0,0,0};
	ArrayList alEn = new ArrayList(Arrays.asList(arrayEn));
	group[7] = alEn;
	}
	
	public void auswertenPaar(ArrayList anfang, ArrayList ende, int i, int j){
		int sum=0;
		for (int h=0; h< 10; h++){
			if ((((Integer)anfang.get(h))==1) && (((Integer)ende.get(h))==1)){
				sum++;
			}
		}
		double op = sum/10.0;
		String k1="";
		String k2="";
		switch (i){
		case 0: k1="E"; break;
		case 1: k1 ="D"; break;
		case 2: k1 = "R"; break;
		case 3: k1= "N"; break;
		case 4: k1 = "EuR"; break;
		case 5: k1 = "EuN"; break;
		case 6: k1 ="ER"; break;
		case 7: k1 = "En"; break;
		default: System.exit(0);
			}
		
		switch (j){
		case 0: k2="E"; break;
		case 1: k2 ="D"; break;
		case 2: k2 = "R"; break;
		case 3: k2= "N"; break;
		case 4: k2 = "EuR"; break;
		case 5: k2 = "EuN"; break;
		case 6: k2 ="ER"; break;
		case 7: k2 = "En"; break;
		default: System.exit(0);
			}
		
		if (op>=0.4){ System.out.println("Das Paar "+ k1 + " " + k2 + " hat Wert: "+ op);}
		
	}
	
	public void auswerten(){
		for (int i=0; i<group.length; i++){
			for (int j= i+1; j<group.length;j++){
				auswertenPaar(group[i], group[j], i, j);
			}
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
         EA3 ea3 = new EA3();
         ea3.auswerten();
	}

}





Folgende Fehlermeldung bei der Castzeile: Exception in thread "main" java.lang.ClassCastException: [I cannot be cast to java.lang.Integer
at WissensbasierteSysteme_3.EA3.auswertenPaar(EA3.java:39)
at WissensbasierteSysteme_3.EA3.auswerten(EA3.java:77)
at WissensbasierteSysteme_3.EA3.main(EA3.java:85)
29.05.2017 15:28 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

RE: Integerwerte in einer ArrayList casten Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Es scheinen auch die Zuordnungen von Feld zu ArrayList nicht zu funktionieren; was muss ich anders machen?
29.05.2017 15:39 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

RE: Integerwerte in einer ArrayList casten Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Es funktioniert folgender Code, aber ich würde es gerne etwas ökonomischer halten:

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:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
  package WissensbasierteSysteme_3;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.PriorityQueue;

public class EA3 {
	ArrayList[] group = new ArrayList[8];

	public EA3() {
		int[] arrayE = { 1, 1, 0, 1, 1, 1, 1, 1, 1, 0 };
		ArrayList<Integer> alE = new ArrayList<Integer>();
		for (int i = 0; i < arrayE.length; i++) {
			alE.add(arrayE[i]);
		}
		group[0] = alE;
		int[] arrayD = { 1, 0, 1, 1, 0, 1, 1, 0, 0, 0 };
		ArrayList<Integer> alD = new ArrayList<Integer>();
		for (int i = 0; i < arrayD.length; i++) {
			alD.add(arrayD[i]);
		}
		group[1] = alD;
		int[] arrayR = { 0, 1, 1, 0, 1, 1, 0, 1, 0, 0 };
		ArrayList<Integer> alR = new ArrayList<Integer>();
		for (int i = 0; i < arrayR.length; i++) {
			alR.add(arrayR[i]);
		}
		group[2] = alR;
		int[] arrayN = { 1, 1, 0, 1, 1, 0, 1, 0, 0, 1 };
		ArrayList<Integer> alN = new ArrayList<Integer>();
		for (int i = 0; i < arrayN.length; i++) {
			alN.add(arrayN[i]);
		}
		group[3] = alN;
		int[] arrayEuR = { 0, 1, 0, 0, 1, 1, 0, 1, 0, 0 };
		ArrayList<Integer> alEuR = new ArrayList<Integer>();
		for (int i = 0; i < arrayEuR.length; i++) {
			alEuR.add(arrayEuR[i]);
		}
		group[4] = alEuR;
		int[] arrayEuN = { 1, 1, 0, 1, 1, 0, 1, 0, 0, 0 };
		ArrayList<Integer> alEuN = new ArrayList<Integer>();
		for (int i = 0; i < arrayEuN.length; i++) {
			alEuN.add(arrayEuN[i]);
		}
		group[5] = alEuN;
		int[] arrayER = { 0, 1, 0, 0, 1, 1, 0, 0, 0, 0 };
		ArrayList<Integer> alER = new ArrayList<Integer>();
		for (int i = 0; i < arrayER.length; i++) {
			alER.add(arrayER[i]);
		}
		group[6] = alER;
		int[] arrayEn = { 1, 1, 0, 0, 0, 0, 1, 0, 0, 0 };
		ArrayList<Integer> alEn = new ArrayList<Integer>();
		for (int i = 0; i < arrayEn.length; i++) {
			alEn.add(arrayEn[i]);
		}
		group[7] = alEn;
	}

	public void auswertenPaar(ArrayList anfang, ArrayList ende, int i, int j) {
		int sum = 0;
		for (int h = 0; h < 10; h++) {
			// System.out.println(anfang.get(h));
			if (((Integer) (anfang.get(0)) == 1) && (((int) ende.get(h)) == 1)) {
				sum++;
			}
		}
		double op = sum / 10.0;
		String k1 = "";
		String k2 = "";
		switch (i) {
		case 0:
			k1 = "E";
			break;
		case 1:
			k1 = "D";
			break;
		case 2:
			k1 = "R";
			break;
		case 3:
			k1 = "N";
			break;
		case 4:
			k1 = "EuR";
			break;
		case 5:
			k1 = "EuN";
			break;
		case 6:
			k1 = "ER";
			break;
		case 7:
			k1 = "En";
			break;
		default:
			System.exit(0);
		}

		switch (j) {
		case 0:
			k2 = "E";
			break;
		case 1:
			k2 = "D";
			break;
		case 2:
			k2 = "R";
			break;
		case 3:
			k2 = "N";
			break;
		case 4:
			k2 = "EuR";
			break;
		case 5:
			k2 = "EuN";
			break;
		case 6:
			k2 = "ER";
			break;
		case 7:
			k2 = "En";
			break;
		default:
			System.exit(0);
		}

		if (op >= 0.4) {
			System.out.println("Das Paar " + k1 + " " + k2 + " hat Wert: " + op);
		}

	}

	public void auswerten() {
		for (int i = 0; i < group.length; i++) {
			for (int j = i + 1; j < group.length; j++) {
				auswertenPaar(group[i], group[j], i, j);
			}
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		EA3 ea3 = new EA3();
		ea3.auswerten();

	}

}
 
30.05.2017 08:57 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
InformaTiger InformaTiger ist männlich
Tripel-As


images/avatars/avatar-77.gif

Dabei seit: 19.02.2013
Beiträge: 228
Herkunft: Südtirol

RE: Integerwerte in einer ArrayList casten 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 Havelin,

habe es soeben getestet: du musst die Integer gar nicht casten falls du dein Array anders anlegst. Und zwar kannst du dir die generischen Ausdrücke zunutze machen in etwa eben so:

code:
1:
ArrayList<Integer>[] group = new ArrayList[8];


dadurch erzielst du, dass deine ArrayLists nur mehr Integer aufnehmen können und die Objekte daher nicht nur als Standardobjekt von Java darin abgelegt werden.

smile

Mit freundlichen Grüßen
InformaTiger

__________________
Why do Java developers wear glasses? Because they can't C#
31.05.2017 18:54 InformaTiger ist offline Beiträge von InformaTiger suchen Nehmen Sie InformaTiger in Ihre Freundesliste auf
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

RE: Integerwerte in einer ArrayList casten Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Aber der Code I funktioniert auch dann nicht. Es wird einfach kein Arrays.asList aktiviert, so wie ich das will. Oder kommst du zu einem anderen Resultat?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Haevelin: 01.06.2017 09:39.

01.06.2017 09:38 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

RE: Integerwerte in einer ArrayList casten Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Folgendes funktioniert:

code:
1:
2:
3:
4:
 int[] probe = {1,2,3,4};
        ArrayList<int[]> al = new ArrayList<>(Arrays.asList(probe));
        System.out.println(al.get(0)[0]);

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Haevelin: 01.06.2017 11:49.

01.06.2017 11:48 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

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 verstehe nicht, warum Du überhaupt mit ArrayList rum machst. Du hast ein zweidimensionales Array, was sich nicht weiter verändern muss. Dann mach einfach ein final int[][] etwa so:
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:
65:
66:
67:
68:
69:
70:
71:
72:
public class EA3 {
	private final int[][] group = {
			{1,1,0,1,1,1,1,1,1,0},
			{1,0,1,1,0,1,1,0,0,0},
			{0,1,1,0,1,1,0,1,0,0},
			{1,1,0,1,1,0,1,0,0,1},
			{0,1,0,0,1,1,0,1,0,0},
			{1,1,0,1,1,0,1,0,0,0},
			{0,1,0,0,1,1,0,0,0,0},
			{1,1,0,0,0,0,1,0,0,0}
	};

	public void auswertenPaar(int[] anfang, int[] ende, int i, int j){
		int sum=0;
		for (int h = 0; h < 10; h++) {
			if ((anfang[h] == 1) && (ende[h] == 1)) {
				sum++;
			}
		}
		double op = sum / 10.0;
		String k1 = "";
		String k2 = "";
		switch (i) {
			case 0: k1 = "E";   break;
			case 1: k1 = "D";   break;
			case 2: k1 = "R";   break;
			case 3: k1 = "N";   break;
			case 4: k1 = "EuR"; break;
			case 5: k1 = "EuN"; break;
			case 6: k1 = "ER";  break;
			case 7: k1 = "En";  break;
			default:
				System.exit(0);
		}

		switch (j) {
			case 0: k2 = "E";   break;
			case 1: k2 = "D";   break;
			case 2: k2 = "R";   break;
			case 3: k2 = "N";   break;
			case 4: k2 = "EuR"; break;
			case 5: k2 = "EuN"; break;
			case 6: k2 = "ER";  break;
			case 7: k2 = "En";  break;
			default:
				System.exit(0);
		}

		if (op >= 0.4) {
			System.out.println("Das Paar " + k1 + " " + k2 + " hat Wert: " + op);
		}

	}


	public void auswerten() {
		for (int i = 0; i < group.length; i++) {
			for (int j = i + 1; j < group.length; j++) {
				auswertenPaar(group[i], group[j], i, j);
			}
		}
	}


	public static void main(String[] args) {
		EA3 ea3 = new EA3();
		ea3.auswerten();
	}
}



Allerdings verstehe ich auch einige andere Dinge nicht so ganz an Deinem Code. Kannst Du mal grob umschreiben, was das überhaupt machen soll???

Gruß
Marco
21.06.2017 14:45 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

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

Dann finde ich auch die switch-case-Anweisungen irgendwie unnötig. Ich meine: Du weißt ja nur den Zahlen 0 bis 7 einen String zu. Das kannst Du auch einfach mit einem String-Array machen.
Wenn Du z. B. das hier definierst:
code:
1:
2:
3:
4:
	private final String[] classification =
		{"E", "D", "R", "N", "EuR", "EuN", "ER", "En"};

Kannst Du das komplette Switch durch einen einfach Array-Lookup ersetzen, etwa so:
code:
1:
classification[i]

und dann nochmal für j um den zweiten switch-Block raus zu bekommen.
Dann würde der Code so aussehen:
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:
public class EA3 {
	private final int[][] group = {
			{1,1,0,1,1,1,1,1,1,0},
			{1,0,1,1,0,1,1,0,0,0},
			{0,1,1,0,1,1,0,1,0,0},
			{1,1,0,1,1,0,1,0,0,1},
			{0,1,0,0,1,1,0,1,0,0},
			{1,1,0,1,1,0,1,0,0,0},
			{0,1,0,0,1,1,0,0,0,0},
			{1,1,0,0,0,0,1,0,0,0}
	};

	private final String[] classification =
		{"E", "D", "R", "N", "EuR", "EuN", "ER", "En"};


	public void auswertenPaar(int[] anfang, int[] ende, int i, int j) {
		int sum = 0;
		for (int h = 0; h < 10; h++) {
			if ((anfang[h] == 1) && (ende[h] == 1)) {
				sum++;
			}
		}

		if (i >= classification.length || j >= classification.length)
			System.exit(0);

		double op = sum / 10.0;
		if (op >= 0.4) {
			System.out.println("Das Paar " + classification[i] + " " + classification[j] + " hat Wert: " + op);
		}

	}


	public void auswerten() {
		for (int i = 0; i < group.length; i++) {
			for (int j = i + 1; j < group.length; j++) {
				auswertenPaar(group[i], group[j], i, j);
			}
		}
	}


	public static void main(String[] args) {
		EA3 ea3 = new EA3();
		ea3.auswerten();
	}
}


Bei mir ist die Ausgabe dann:
code:
1:
2:
3:
4:
5:
6:
7:
8:
Das Paar E D hat Wert: 0.4
Das Paar E R hat Wert: 0.4
Das Paar E N hat Wert: 0.5
Das Paar E EuR hat Wert: 0.4
Das Paar E EuN hat Wert: 0.5
Das Paar R EuR hat Wert: 0.4
Das Paar N EuN hat Wert: 0.5

Ich bin aber nach wie vor sehr skeptisch, dass das wirklich das ist, was Du haben wolltest.

Gruß
Marco
21.06.2017 15:15 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Integerwerte in einer ArrayList casten