Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
MethodenBei Arrayausgabe wird eine nichtdefinierte Zeichenkette/Anhängsel ausgegeben
Ich habe eine Methode geschrieben, die Primzahlen ermitteln soll. Wenn ich z.B. 3 Primzahlen haben möchte wird mir Folgendes zurückgegeben:
2
3
5
[I@19f953d
Diese Zeichenkette/Anhängsel, die an sich nicht definiert ist, stört mich und ich habe schon verschiedenste Dinge ausprobiert(z.B. letzten Arraywert löschen), um ihn zu entfernen, leider ohne Erfolg. Googeln hat leider auch nicht geholfen. Vielleicht kann hier mir jemand helfen?
Hier mein Quelltext:
Java:
public static void main(String[] args) {
System.out.println(getPrime(3));
}
public static int[] getPrime(int n){
int a = 0, b = (n*n), Primzahl [] = new int[n];
if (n<3){
b=10;
}
boolean zahlen [];
zahlen = new boolean [b];
for (int i= 0; i < b; i++){
zahlen[i] = true;
}
for ( int i = 2; i < b & a < n; i++){
if (zahlen[i] == true) {
Primzahl [a] = i;
System.out.println(Primzahl[a]);
a++;
for (int m = i; m < b; m=m+i){
if (m<=(b)){
zahlen[m] = false; }}
}
}
return Primzahl;
}
}
Dankefür die zügige Antwort. Habe deine Anregung in verschiedenen Weisen umgesetzt (in Methode getPrime selbst in String umwandeln, in Mainmethode in String umwandeln), leider habe ich das gewünschte Ergebnis nicht erreicht- in Gegenteil, manchmal erschien der Anhängsel sogar doppelt Vielleicht hast du einen anderen Rat???
An der Seite meldet er "Arrays cannot be resolved" und bei Ausführen kommt
" Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Arrays cannot be resolved
Womöglich fehlt der Import ?
Arbeitest du nicht mit einer IDE ?
Java:
import java.util.Arrays;
public class AbgabeUebung2 {
public static void main(String[] args) {
System.out.println(Arrays.toString(getPrime(5)));
}
public static int[] getPrime(int m){
int n = getPrimeSearchLimit(m);
int z = n-1;
boolean[] gestrichen = new boolean[z];
for (int i = 2; i <= n; i++) {
gestrichen[i-2] = false;
}
int q = (int) Math.sqrt(n);
for(int i=2; i <= q; i++) {
if (!gestrichen[i-2]) {
for (int j = i*i; j <= n; j+=i){
if (!gestrichen[j-2]){
gestrichen[j-2] = true;
z--;
}
}
}
}
if (z > m ) z=m;
int[] primes = new int[z];
int zz=0;
for(int i=2; i <= n; i++) {
if (zz==z) break;
if (!gestrichen[i-2]) {
primes[zz]=i;
zz++;
}
}
return primes;
}
private static int getPrimeSearchLimit(int gesuchteAnzahl){
// Abschätzung des Suchbereiches für eine bestimmte Anzahl von Primzahlen
int n=2;
int q=1;
do {
n=(int) (n+(gesuchteAnzahl-q)*Math.log(n+1));
q=(int) (n/Math.log(n));
} while (q < gesuchteAnzahl);
return n;
}
}
[EDIT]wieder viel zu spät.. hab ich so lang gebraucht das rauszufinden ui...[/EDIT]
[EDIT]und auch noch ein paar Fehlerchen eingebaut, jetzt berichtigt[/EDIT]