2016-04-18 8 views
0

Mein Array hat insgesamt 10 Indizes und ich versuche array[0] = 1/1, array[1] = 1/2, array[2] = 1/3, array[4] = 1/4 und so weiter zu setzen.Zuweisen von Werten in einem Array unter Verwendung von Berechnungen mit dem Index jedes Elements

Nach der Berechnung ich die Elemente mit Sytem.out.println();

angezeigt werden soll Was mache ich falsch?

public static void main(String[] args) { 
    final int VALUE =1; 
    int[] array = new int[10]; 
    int counter=10; 
    double result =0; 
    for(int i =0; i<array.length; i++) 
    { 
     array[0]=VALUE/i; 
     array[1]=VALUE/i; 
     array[2]=VALUE/i; 
     array[3]=VALUE/i; 
     array[4]=VALUE/i; 
     array[5]=VALUE/i; 
     array[6]=VALUE/i; 
     array[7]=VALUE/i; 
     array[8]=VALUE/i; 
     array[9]=VALUE/i; 

    System.out.println(array[0] +" " + array[1] +" " + array[2] +" " + array[3]+" " + array[4]+" "+array[5]+" " +array[6] +" " + array[7]+" " + array[8]+" " + array[9]+" " + array[10]); 
    } 
} 
+0

Sie einfach nur wollen, 'array [i] = VALUE/i;' – 3kings

+1

Was denken Sie 'array [0] = VALUE/i;' tut? Was ist mit 'array [1] = VALUE/i;', usw.? Was werden sie jedes Mal anders machen? – azurefrog

+0

Ich dachte, dass das i jede einzelne Umdrehung ändert (ich steigere um for loop +1) aber es tut das nicht wie ich erwarte @azurefrog –

Antwort

5

Zwei Probleme. Der erste ist, dass Ihre Schleife nimmt bereits um im Array über jeden Index gehen, so können Sie nur, wie etwas tun:

for (int i = 0; i < array.length; i++) 
{ 
    array[i] = 1.0/(i+1); 
    System.out.println(array[i] + " "); 
} 

Die andere ist, dass Sie ein Array von ganzen Zahlen verwenden. Per Definition kann eine ganze Zahl kein Bruch sein. Versuchen Sie es mit einer Reihe von Doppel statt:

double[] array = new double[10]; 
+0

War nicht einmal darüber nachdenken, wie das OP das Array definiert. Guter Fang. –

+0

@ Brandon wäre eine gute Idee zu Update deine Antwort mit dem gleichen =) – CubeJockey

+0

Ich habe zwei Fragen. Zuerst einmal vielen Dank für Ihre Antwort. Ich verstehe nicht 2 denkt, warum hast du VALUE Variable nicht verwendet. Zweitens erhöht ich nicht schon +1. Wenn nicht warum? –

4

Sie verwenden eine Schleife und tun dies auch manuell. Verwenden Sie einfach die Schleifeniterationen, um es zu berechnen, und verwenden Sie den Wert i für Ihre Array-Werte.

for(int i = 0; i < array.length; i++) 
{ 
    array[i] = VALUE/(i+1); 
} 

System.out.println(array[0] +" " + array[1] +" " + array[2] +" " + array[3]+" " + array[4]+" "+array[5]+" " +array[6] +" " + array[7]+" " + array[8]+" " + array[9]); 

Ein weiteres Problem, wie von anderen erwähnt, ist es, dass Ihr Ergebnis in der Fraktion oder die Gleitkommaeinheit sein würde, und Sie versuchen, es in einem int Array zu speichern

Verwenden Sie einen Schwimmer Array statt

float[] array = new float[10]; 
+2

Division durch Null Fehler bei beginign –

+2

Setzen Sie Klammern um i + 1, so ist es VALUE/(ich + 1) und es wird gut zu gehen. –

+0

@BrandonWillis, Danke. Erledigt. – Praveen

Verwandte Themen