2016-07-20 8 views
0

Ich nehme Datenstruktur Kurs, und ich habe eine Frage am Ende des Kapitels, die ich nicht lösen konnte.Wie man Deklarationen einer Array-Klasse macht

class WeatherRecType { 
    int AvgHiTemp; 
    int AvgLoTemp; 
    float ActualRain; 
    float RecordRain; 
} 

Frage:

Deklarieren ein eindimensionales Array von WeatherListTypeWeatherRecType Komponenten enthält zehn Elemente.

Antwort:

WeatherRecType WeatherListType[] = new WeatherRecType[10]; 

Frage:

Weisen Sie den Wert 1,05 bis der ActualRain Feld des siebten Rekord in WeatherListType.

Antwort: ???

Wie wird der Wert ActualRain im Array WeatherListType Feldnummer 7 zugewiesen?

Ich versuchte es so, aber es funktioniert nicht: Problem Image


Das Problem ist gelöst, vielen Dank an alle, die mit mir ihr Wissen geteilt. Hier ist die richtige Antwort: Correct Answer Image


und ich glaube, ich kann den Wert auf ActualRain initialisieren, ohne die siebte Zelle erklärt erneut, mit anderen Worten, ohne zu schreiben: WeatherListType[6] = new WeatherRecType();

WeatherRecType[] WeatherListType = new WeatherRecType[10]; 
WeatherListType[6].ActualRain = 10; 
+1

'WeatherRecType [] WeatherListType = new WeatherRecType [10];' ist besser: das '[]' ist Teil des Typs, nicht der Variablenname. Beide sind jedoch als Zeichengabe für C-Programmierer erlaubt. –

+4

Ernsthaft: indem Sie noch mehr lernen!Das ist super-basisches Zeug, dokumentieren Sie eine Zillion mal da draußen; also solltest du nicht zuerst herkommen und nach Erklärungen fragen ... – GhostCat

+0

Willkommen bei Stack Overflow. Ihr Code-Snippet wird nicht kompiliert, da 'Class' (mit einem Großbuchstaben C) kein echtes Schlüsselwort ist. –

Antwort

2

Seventh Aufzeichnung eines Arrays in den meisten grundlegenden Programmiersprachen (C, Java etc.) übersetzt Index 6, wie das Zählen mit dem Index beginnt 0. So müssten Sie:

WeatherListType[6] = new WeatherRecType(); 
WeatherListType[6].ActualRain = 1.05f; 

Aber da diese ist ein Datenstrukturkurs, auf den Sie sich beziehen, 7 kann funktionieren, wenn Sie in Bezug auf Pseudocode oder etwas sprechen.

+1

ja Sie haben Recht, weil die Array-Indizierung von 0 beginnt, danke –

0

Schreiben Sie einfach .

WeatherListType[7] = new WeatherRecType(); 
WeatherListType[7].ActualRain = 1.05f; 

Es ist noch besser, wenn Sie Setters für alle Felder in WeatherRecType erstellen.

Update: machen Sie die Korrektur wegen des Kommentars unten.

+2

Ich denke nicht, dass dies funktioniert, da WeatherLidtType [7] in diesem Fall Null enthält. Sie müssen es zuerst initialisieren. – Endzeit

+0

Sicher! Habe es verpasst. Sollte sein 'WeatherListType [7] = new WeatherRecType(); WeatherListType [7] .ActualRain = 1.05f; ' – Tuchkata

+1

Der Index ist falsch. Die Fragen sagen "der siebte Datensatz", also ist der korrekte Index "6". – Tom

0

WeatherListType [6] .ActualRain = 1.05f;