2016-11-12 6 views
-3

Zum Lesen einer Menge von Zeilen habe ich eine Schleife zu lesen von Zeile 0 den ganzen Weg bis Zeile 61166. Wenn ich jedoch versuche, diese Datei kompilieren alles, was ich bekomme ist, dass ich nicht von int zu double[] konvertieren kann, obwohl die Variablen keine Ganzzahlen sind. Was habe ich falsch gemacht? TBH Ich bin ein wirklich Anfänger, wenn es um Java geht. Dies ist für eine Schule ÜbungFor Schleife kann nicht konvertieren von int zu double []

int m = 61166;            
int[] l = new int[m];           
double[] p = new double[m] ;          
double[] q = new double[m];          

for (p = 0; p < m ; p++); 
+2

Sie haben 'p' als' double [] 'deklariert, aber versuchen, seinen Wert auf' 0' zu setzen. Was genau versucht diese Schleife zu machen? – David

+0

Ihr Code ist unvollständig. Würden Sie das Ganze zur Verfügung stellen? – Media

+0

Was wir versuchen, diese Schleife zu tun, ist, wenn wir die Eingabe erhalten, liest die Schleife eine Textdatei von Zeile 0 bis Zeile 61166, bis sie eine Übereinstimmung mit der Eingabe findet (es ist wie eine Koordinate Textdatei). –

Antwort

0

In Ihrem Code Sie p wie ein int Wert verwenden, während es vom Typ double[] ist.
Verwenden Sie den folgenden Code statt:
for (int pp = 0; pp < m; pp++)

+0

also wie könnte ich in der Lage sein, seinen Typ zu ändern, um nur zu verdoppeln und [] nicht zu verdoppeln, weil ich das für p = 0 zu p = 0.0 ändern konnte mach es zu einem double, aber als ich immer noch bekomme der fehler kann nicht konvertieren von double zu double [] –

+0

Ich weiß nicht, Ihre Absicht, wenn Sie versuchen, eine Variable vom Typ double als der Zähler Ihrer Schleife, sollten Sie schreiben: * double a = 0,0 *.aber ich empfehle Ihnen, 'int'-Werte als Zähler der Schleife zu verwenden. – Media

0

so einfach ist es, Ihnen erklärt p als ein Array von double:

double[] p = new double[m]; 

Dann versuchen Sie es Wert 0 (p = 0;), die natürlich zu setzen gewonnen‘ t Arbeit seit 0 hat int als ein Typ (das ist, was der Compiler normalerweise für Zahlen annimmt, wenn nicht explizit anders angegeben).

Es ist wie gesagt: Erstellen Sie eine leere Liste, die 61166 doppelte Werte halten kann. Setzen Sie nun den Wert der Liste auf 0. Sie würden wahrscheinlich auch verwirrt sein.

1

Das Problem besteht darin, dass Sie versuchen, ein Array als Ihren Loop-Index/Inkrementierer zu verwenden. Theoretisch könnte man so etwas tun:

int m = 61166;            
    int[] l = new int[m];           
    double[] p = new double[m] ;          
    double[] q = new double[m];          

    for (p[0] = 0; p[0] < m ; p[0]++); 

Aber ich glaube nicht, dass Ihr Programm ausführen, um die Art und Weise machen Sie es auch wollen. Ich denke, Sie möchten etwas in der Art tun:

int m = 61166;            
    int[] l = new int[m];           
    double[] p = new double[m] ;          
    double[] q = new double[m];          

    for (int index = 0; index < m ; index++){ 
     //perform operations on your loop 
     p[index] = //something 
     q[index] = //etc... 
    } 
Verwandte Themen