Hallo, ich habe ein folgendes Problem mit der Initialisierung eines Arrays:
Ich möchte mit
Java:
double k=0;double[] list;
einen Array initialisieren und mit
Java:
list[k]= i;
einen Double-Wert darin speichern. Doch wenn ich mein Programm kompilieren will gibt es folgende Fehlermeldung:
Java:
prim.java:19: possible loss of precision
found :double
required:int
list[k]= i;^1 error
Ich möchte dabei mehrere Double-Werte (i) abspeichern. Neben i ist auch k als double initialisiert, da der Wertebereich von int nicht ausreicht.
Ich persönliche gehe davon aus, dass der Compiler eine int für k erwartet, aber wenn ich eine Zahl über dem Wertebereich von int caste, bekomme ich falsche Zahlen.
Ich möchte mit dem Programm Primzahlen ausgeben,die größer sind als der Wertebereich von int. Ich prüfe also ob jede Zahl durch 2,3,5,7 und jede Weitere Primzahl teilbar ist. Neu entdeckte Primzahlen sollen dem Array zugefügt werden, drum kann es passieren, dass k ebenfalls größer als der Bitbereich von int wird...Wie kann ich da denn am Besten vorgehen? Ich befürchte nämlich, dass double mir noch zu klein ist :/
Ja, es geht um Ganzzahlwerte, aber ich glaube fast BigInteger ist in dem Fall besser geeignet, da es sich um wirklich große Zahlen handelt, die möglicherweise auch nicht mehr in long definiert sind.
Also mit int-Werten funktioniert das Ganze schonmal, danke dafür...
Java:
class prim{publicstaticvoid main (String args[]){double n =Double.parseDouble(args[0]);boolean pri;int k=0;double[] list;
list =newdouble[(int) n];
list[0]=2;for(double i=1; i<=n; i=i+2){
pri=true;for(double j=2; j<=k; j++){if(i%j ==0){
pri=false;break;}}if(pri==true){
list[k]= i;
k++;System.out.println(i);}}}}
Wie das Ganze dann mit BigInteger gehen soll, ist mir allerdings ein Rätsel...auch wenn ich die Klasse importiere, hagelt es nur Fehlermeldungen...Ich hatte mir das so gedacht:
Java:
importjava.math.BigInteger;class prim{publicstaticvoid main (String args[]){BigInteger n =BigInteger.parseBigInteger(args[0]);boolean pri;BigInteger k=0;BigInteger[] list;
list =newBigInteger[n];
list[0]=2;for(BigInteger i=1; i<=n; i=i+2){
pri=true;for(BigInteger j=2; j<=k; j++){if(i%j ==0){
pri=false;break;}}if(pri==true){
list[k]= i;
k++;System.out.println(i);}}}}
Java:
primbig.java:5: cannot find symbol
symbol : method parseBigInteger(java.lang.String)
location:class java.math.BigIntegerBigInteger n =BigInteger.parseBigInteger(args[0]);^
primbig.java:7: incompatible types
found :int
required: java.math.BigIntegerBigInteger k=0;^
primbig.java:9: incompatible types
found : java.math.BigInteger
required:int
list =newBigInteger[n];^
primbig.java:10: incompatible types
found :int
required: java.math.BigInteger
list[0]=2;^
primbig.java:11: incompatible types
found :int
required: java.math.BigIntegerfor(BigInteger i=1; i<=n; i=i+2){^
primbig.java:11: operator <= cannot be applied tojava.math.BigInteger,java.math.BigIntegerfor(BigInteger i=1; i<=n; i=i+2){^
primbig.java:11: operator + cannot be applied tojava.math.BigInteger,intfor(BigInteger i=1; i<=n; i=i+2){^
primbig.java:13: incompatible types
found :int
required: java.math.BigIntegerfor(BigInteger j=2; j<=k; j++){^
primbig.java:13: operator <= cannot be applied tojava.math.BigInteger,java.math.BigIntegerfor(BigInteger j=2; j<=k; j++){^
primbig.java:13: operator ++ cannot be applied tojava.math.BigIntegerfor(BigInteger j=2; j<=k; j++){^
primbig.java:14: operator % cannot be applied tojava.math.BigInteger,java.math.BigIntegerif(i%j ==0){^
primbig.java:20: incompatible types
found : java.math.BigInteger
required:int
list[k]= i;^
primbig.java:21: operator ++ cannot be applied tojava.math.BigInteger
k++;^13 errors
Wobei natürlich wieder das Problem mit dem Array auftritt, und ausserdem eben noch diese Anderen... Ich beginne mit Java zwecks Studium und muss sagen, dass ich keine Vorstellung habe, wie dies anders zu bewerkstelligen ist :noe:
Allerdings benutzen Listen ja auch ein int als Indexangabe und haben damit eine 2.1-Milliarden-Begrenzung. Weiß aber nicht, wie viele Primzahlen es bis zu dem Wertbereich bis zu den du testen willst gibt und wie es sich bei Iteration verhält.