2016-11-10 4 views
-1

Wie würde ich ein Array der Sequenz [1/1, 1/2, 1/3] usw. mit Dezimalnäherung mit einem Array int [] zurückgeben? Ich habe dies bisher versucht:Drucken eines Arrays int [] mit Dezimalnäherungen

public static int[] decimalApproximations (int arraySize) { 
    int [] sequence = new int[arraySize]; 
    for(double i = 1; i <= arraySize; i++) { 
     sequence[(int)(i)-1] = (int)(1.0/i); 
    } 
    return sequence; 
} 

Aber es druckt noch 1 1/1 und 0 wegen der int Abschneiden. Gibt es eine Möglichkeit, Dezimalnäherungen in diesem Array zu haben?

+4

Das ist nicht möglich. Per Definition können Ganzzahlen keine Bruchzahlen speichern. Sie müssen stattdessen 'float',' double' oder 'BigDecimal' Werte verwenden. Da Sie nicht erklären, WARUM Sie dies tun möchten, können wir keine Lösung vorschlagen. –

+0

Möchten Sie '[1.0, 0.5, ....' als Ausgabe? – bradimus

+0

@bradimus Ich denke, das ist, was er sucht. –

Antwort

0

Sie Ihre ändern int zu double:

public static double[] decimalApproximations (int arraySize) { 
    double[] sequence = new double[arraySize]; 

    for(double i = 0; i < arraySize; i++) { 
     sequence[i] = 1.0/(i+1); 
    } 

    return sequence; 
} 
+0

Ich glaube, du hast vergessen, Werte zu 'result' zuzuordnen. – bradimus

2

Wie in den Kommentaren erwähnt, ein int-Array nicht Dezimalwerte speichern kann, aber wenn man ein Array mit der Sequenz wollen, könnte dies helfen:

public double[] decimalApproximations (int arraySize) { 
    double [] sequence = new double[arraySize]; 
    for(int i = 0; i < arraySize; i++) { 
     sequence[i] = 1.0/(i+1); 
    } 
    return sequence; 
} 
+0

Mit java-8 'return IntStream.rangeClosed (1, arraySize) .mapToDouble (i -> 1.0/i) .toArray();' – bradimus