PDA

View Full Version : [FRAGE] - Arraystellen vergleichen


Subway
04-06-2004, 15:27
Hallo!

Die Aufgabe ist man soll den Unterschied zwischen 2 Arraystellen ausgeben (Bsp Hammingdistanz) also 00 01 wäre 1 oder 000 111 wäre 3. Jetzt hab ich das so gemacht aber es haut nicht hin. Es kommt immer 0 raus


for(int i=0; i<store.length; i+=2) {
for(int j=0; j<wordlength; j++) {
if(store[i].charAt(j)!=store[i+1].charAt(j))
hamcount++;
}
}

Kann mir vielleicht wär weiter helfen? Bitte wäre echt super

Filz
04-06-2004, 16:58
schaut eigentlich richtig aus. Wie schaut dein store genau aus? Hast ein Beispiel?

so wie's ausschaut, kann der Fehler eigentlich nur im "wordlength" liegen, glaub ich

was kommt beim debuggen raus?


for(int i=0; i<store.length; i+=2)
{
for(int j=0; j<wordlength; j++)
{
EprogIO.println(i+","+j+": "+store[i].charAt(j)+" ?= "+store[i+1].charAt(j)));
}
}

Subway
04-06-2004, 19:47
Das ganze lese ich mit einer for Schleife ein und übergib das in an store. Müsste doch passen oder?
Das Problem ist, dass er gar nie in die if-Verzweigung reinspringt und deswegen kommt immer 0 raus


for (input=EprogIO.readWord(); (input.charAt(0)=='0')==true||
(input.charAt(0)=='1')==true; input=EprogIO.readWord()) {
wordcount++;
output+=input;
try {
for(int i=0; i<store.length; i++)
store[i]=input;
}
catch (IndexOutOfBoundsException e)
{spezError=true;}
}

rck
05-06-2004, 00:07
Die Aufgabe ist man soll den Unterschied zwischen 2 Arraystellen ausgeben (Bsp Hammingdistanz) also 00 01 wäre 1 oder 000 111 wäre 3. Jetzt hab ich das so gemacht aber es haut nicht hin. Es kommt immer 0 raus

bin gerade nicht wirklich zurechnungsfähig. probiere dennoch eine schleife

hamm=0;

for(int i=0; i<length; i++)
if(a.charAt[i]!=b.charAt[i])
hamm++;

roger?

sorry, schlechter tag. // René

rck
05-06-2004, 00:11
Wenn's für mehrere Werte gehen sollte, mach nicht den Fehler, einfach eine Schleife darüber zu tun. Damit tust Du Dir beim Debuggen schwer -- ich kenne mich bei Deinem Code nicht wirklich aus. Sondern:


public int hamdistanz(String a, String b) {
// siehe vorher
}

und dann on demand aufrufen, da geht dann sehr wohl eine schleife:


println(hamdistanz(x[1], x[2])) oder sowas.


hoffe, die idee ist klar. Code ist so natürlich nicht compilierbar.

rogov
05-06-2004, 00:49
Hallo!

Kennn mich bei deinem Code jetzt zwar auch nicht gut aus aber die Übergabe vom input kann nicht hinhauen. Weil es würde ja dann immer jede Zahl an jede Stelle des Arrays übergeben werde. Also weg mit der for-Schleife und einfach i++ einfügen, das dann bei jedem Schleifendurchlauf von input erhöht und an der richtigen Stelle im Array speichert.
Klar?