"cannot convert from long to int" - problem

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Ich habe folgendes Array definiert:
long einWert = 2;
long testfield[] = new long [einWert];
Nun kommt die Fehlermeldung "Cannot convert from long to int"
Also was muss ich jetzt machen, ich hab doch schon das testfield-Array als longtype definiert!
Ich versteh absolut nichts mehr, bitte helft mir!
 
Das Problem ist nur, dass diese einWert Variable unbeding als longtyp deklariert werden muss, da sie wirklich zahlen annehmen kann, die weit über dem int-Bereich liegen...
 
Sollte einWert grösser als jeder int werden, wird sowieso die VM abstürzen (oder wieviele GB RAM hat dein PC...?)

Du verwendest hier einWert als Angabe, wiegross ein Array sein soll, und die Grösse eines Arrays ist beschränkt (durch die Grösse eines ints).

Wenn du den Array beim erstellen gleich füllen möchtest, musst du sowas verwenden:
Code:
long[] testfield = new long[]{ einWert };
 
Ich glaube ich brauch es doch nicht zu tun.
Jedenfalls wäre einWert in meinem Programm die Länge eines Datanstrings, der gleichzusetzen wäre mit der Länge einer Datei...
Also man nehme mal an der Dateibytebereich für einen Inttype wäre die Gruppe Gruppe G(N, +, *).
Für N steht ein positiver Grenzwert fest (nänlich der Inttype-Bereich), also:
2 147 483 648
Dann hätte man Platz für 2 147 483 648 Byte,
2 147 483 648 / 1024 = 2 097 152 KByte
und
2 097 152 / 1024 = 2048 MByte.

Also eigendlich nimmt ja eine Datei kaum eine solche Größe an, oder?
Dann wäre das Problem für mich gelöst... Bitte bestätigt mich nochmal, ob mein Gedankenzug richtig war, dann kann ich unbesorgt weiterarbeiten.
 
Gruppe G(N, +, *).

was soll das sein???

keine Ahnung welchen Gedankenzug du machst, arrays haben in Java IMMER einen int als index, es gibt keine arrays, der anzahl von elementen sich nur als long darstellen lässt

typ[] as new typ[x] // bedeutet, dass x vom typ int ist (oder short, byte)
 
Achso, vielen Dank.
Also Gruppe G ist ein Mathematisch abgeschlossener Breich, Gruppen sind Teile mathematischer Körper.
Also die Gruppe G(N, +, *) bedeutet folgendes.
- Der Zahlenbereich sind die Natürlichen Zahlen(N), welche natürlich durch den int-Bereich begrenzt sind
- Die additive Verknüpfung(das +) sagt aus, dass man innerhalb der Gruppe problemlos addieren und suptrahieren kann ohne aus dem Bereich zu gelangen(also, z.b, auf eine Dezimalzahl mit Nachkommestellen).
- Die multiplikative Verknüpfung(*) ist das gleiche wie +, nur das man hier eben multiplizieren kann.

Mehr sagt das ganze nicht aus. Ein "/" könnte z.b. in der Gruppendefinition nicht stehen, da es zu dezimalwerten kommen könnte, die nicht durch den inttype korrekt repräsentiert werden kann(z.b. 3,45).
 
Ist schon ziemlich lange her das wir das in Mathe gemacht haben, aber was ist mit der Eigenschaft des "inversen" Elements?

Dein neutrales ist ja "0", allein damit würdest du bei manchen Mathematikern schon Spott ernten , wenn du sagst das die Gruppe für N gilt 😉 Abgesehen davon muss für das Inverse Element doch gelten:

A + A(quer) = E,

also a + a(quer) = 0, also a + (-a) = 0, doch -a ist ja dann nicht mehr in N, so dass du auf die ganzen Zahlen erweitern müsstest.

Vielleicht hab ich auch einfach was falsch in Erinnerung. Ist wie gesagt schon länger her.
 
>>Also Gruppe G ist ein Mathematisch abgeschlossener Breich

was ist ein Bereich? Eine Gruppe ist ein Tripel (G,*), wobei G eine Menge ist und * eine Abbildung GxG->G

>>Gruppen sind Teile mathematischer Körper.

nein, es gibt Gruppen die nicht in einem Körper enthalten sind; z.B. die Permutationsgruppen

>>Also die Gruppe G(N, +, *) bedeutet folgendes.??
>> Der Zahlenbereich sind die Natürlichen Zahlen(N),
>> welche natürlich durch den int-Bereich begrenzt sind

hä? (N,+) ist nur eine Halbgruppe, genauso (N,*); in beschränken kann man hier nichts

(Java-Int,+) wäre nicht einmal eine Halbgruppe, weil du die Addition nicht ausführen kannst

>> Die additive Verknüpfung(das +) sagt aus,
>>dass man innerhalb der Gruppe problemlos addieren und
>>suptrahieren kann
>> ohne aus dem Bereich zu gelangen(also, z.b, auf eine >>Dezimalzahl mit Nachkommestellen).

genau das geht bei java Integers NICHT

>> Die multiplikative Verknüpfung(*) ist das
>>gleiche wie +, nur das man hier eben multiplizieren kann.

auch das geht bei java Integers NICHT

Wenn N = {0,1,2,3,...}, dann sind (N,+) und (N,*) nur Halbgruppen

Wenn Z = {...,-2,-1,0,1,2,...}, dann ist (Z,+) eine Gruppe und (Z,*) nur eine Halbgruppe

Wenn Q die Brüche sind, dann ist (Q,+) eine Gruppe, (Q\0,*) eine Gruppe und (Q,+,*) ein Körper
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben