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

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Integerwerte in einer ArrayList casten » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 8 Beiträge
as_string

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
as_string

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

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]);
Haevelin RE: Integerwerte in einer ArrayList casten

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?
InformaTiger RE: Integerwerte in einer ArrayList casten

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

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

	}

}
 
Haevelin RE: Integerwerte in einer ArrayList casten

Es scheinen auch die Zuordnungen von Feld zu ArrayList nicht zu funktionieren; was muss ich anders machen?
Haevelin Integerwerte in einer ArrayList casten

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)