Java - ArrayList - .size () - Methode
Ich bin derzeit in den Prozess des Lernens der Programmiersprache Java, und ich brauche Hilfe zu verstehen, die size-Methode der ArrayList-Klasse. Vor der Frage, lassen Sie mich erklären, das Programm.
Dieses Programm findet den Durchschnitt der Klasse Noten.
Meine Frage wäre, über die size-Methode der ArrayList-Klasse. In der For-Schleife, der relationale Ausdruck, "ich < die Noten.size ()" wird ausgeführt "ich", bis es weniger als die Größe des Arrays. Ich wurde angewiesen, dass die Größe des Arrays ist immer eine mehr als die Anzahl der Elemente im array, also in meinem Fall, da ich 3 Elemente (Noten) in meinem array habe ich sogar ein array der Größe 4 (ähnlich wie ein string funktioniert). Beachten Sie, dass nachdem ich aus der For-Schleife, und ich bin in der Lage, angemessen zu berechnen, mein Durchschnitt mit der Größe-Methode. Ich bin verwirrt, weil, wenn die Größe des Arrays eine mehr als die Anzahl von Elementen, dann wäre es nicht nur dividieren durch 4, anstatt 3? Warum die Regeln funktionieren anders in einer For-Schleife? Danke für jeden, der bereit dazu zu beleuchten.
import java.util.ArrayList;
public class Chap11Part1
public static void main(String[] args)
{
double average;
int total = 0;
ArrayList<Integer> grades = new ArrayList<Integer>();
grades.add(78);
grades.add(84);
grades.add(90);
for(int i = 0; i < grades.size(); ++i)
total += grades.get(i);
average = total / grades.size();
System.out.println("The average is " + average);
die es nicht brauchen Klammern
Sie missverstehen die "Größe des array ist immer eine mehr als die Anzahl der Elemente." Es ist eigentlich eine mehr als der größte index. Wenn Sie die 3 Elemente, Sie haben eine maximale index von
2
(0
, 1
und 2
), die 3 einzelnen Elementen. Wenn Sie angerufen .size()
auf eine solche Liste, die Sie erhalten würden 3
zurück.RC, ich Schätze die Antwort, aber ich glaube nicht, dass würde betroffen haben meinen code. Denken Sie daran, beim Programmieren in Java, single-Anweisung-Schleifen geschrieben werden kann, ohne zu Klammern.
Bei den Kosten für das entzünden einer kleinen Flamme, Sie ist als gute Praxis (und beauftragte in verschiedenen style-guides) immer auch Hosenträger in nicht-one-liner
for
, while
und if/then/else
Blöcke... "BEARBEITEN" - one-liner interpretiert werden, wie in "kein Ende in der gleichen Zeile, in der sich die öffnung for
" und nicht als "Einzel-Anweisung"InformationsquelleAutor Jeff Sours | 2015-06-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Größe des Arrays ist gleich der Zahl der Elemente. Einzige Sache zu erinnern ist, index beginnt mit 0; Also Letzte index size-1:
Ich glaube, ich verstehe es jetzt. Ich fange "ich" an der null in der For-Schleife. Als Staat von Rajesh, die Größe der Noten zurückgegeben werden, die durch die gleiche Anzahl von Elementen. Das erste element beginnt bei null, und ich möchte die Schleife stoppen vor 3, weil ich nicht über ein element in das Dritte Fach, so konnte ich nicht bekommen nichts von diesem Fach meine insgesamt. An diesem Punkt, meine Schleife beendet wird. Es ist akzeptabel für meine Durchschnittliche Rechnung, denn es gibt die Anzahl der Elemente. Danke an alle für die Hilfe und das Verständnis der Programmierung styles!
InformationsquelleAutor Rajesh
Als wurde darauf hingewiesen, Sie haben eine Verwirrung, die hier beginnt:
Ob dieses Missverständnis wurde von Seiten der Lehrer Sachen erklären oder Sie falsch interpretiert die Bedeutung ist irrelevant. Dieses Verständnis ist die Quelle deiner Verwirrung und letztlich das problem.
Sind Sie richtig. Und
ArrayList
'ssize
Funktion gibt 1 zurück, mehr als etwas, ähnlich wieString
s Arbeit als gut. Dass etwas ist der maximale index. Arrays (und letztlichArrayList
s, die nur eine Datenstruktur implementiert, die auf eine zugrunde liegende array) über einen index-Wert, der beginnt bei0
(nicht1
wie Sie normalerweise würde beim zählen). Das bedeutet, dass, wenn Sie hatte die drei zahlen, die Sie würde am Ende mit etwas wie dieses:(Ignorieren Sie den Pseudo-code syntax, achten Sie auf die Werte in Klammern hier)
Wenn ich wurden, um die
size
(oderlength
mit bestimmten Typen), würde ich3
. Man kann deutlich sehen, es sind nur 3 zahlen angezeigt. "Eine mehr als" Aspekt einer mehr als der maximale index. Die maximale index-hier ist2
angesichts der Tatsache, dass wir mit dem zählen beginnen (index-wise)0
.Dieses Problem ist einer der häufigsten die ich gesehen habe von der neuen Entwickler und es ist oft bezeichnet als "off-by-one error" oder OBO Fehler, wie Sie wollen, das erste element einer Liste, kann man versuchen
list.get(1)
bei, dass das ist eigentlich der zweiten element der Liste.get(0)
wäre das erste.So, nun aber...
Haben Sie 3 Elemente in Ihrem
ArrayList
ein Aufruf.size
geben würde (wie man es erwarten sollte) die Anzahl3
im Gegenzug. Ihre Schleife Vergleiche gehen so:Wie Sie sehen können, wird Ihr Zustand überprüft wird "eine mehr als die Anzahl der Elemente" - Zeiten (in diesem Fall
4
) aber nur3
Zeiten, oder die tatsächliche Anzahl der Elemente, wird die Schleife ausgeführt wurde oder ausgeführt wird. Wenn Sie versehentlich verwendet<=
statt, Sie würden sich einen OBO Fehler, indem Sie auf "eine mehr als die Liste enthält." Das ist, warum mit einem Griff auf dieses ganze "bei 0 beginnen" zählen-system wird der Schlüssel sein, ebenso wie das Verständnis, dass Größen oder Positionen neigen dazu, eine größere als index-Werte.Wenn ein Teil dieser ist eher verwirrend als es sein sollte, lass es mich wissen und ich werde versuchen, es zu beheben up.
InformationsquelleAutor Brandon Buck
Elemente in Ihrem array (78, 84, 90) werden addiert und geben die Größe/Länge des Arrays, die 3 (einer mehr als der größte Schrift) Was Sie wissen sollten ist, dass der index (position der einzelnen Elemente) von 0 startet. Also in deiner Liste, 78 ist bei index 0, 84 bei 1 und 90 unter 2.
Ich denke, Sie sollten Lesen Sie mehr über die verschiedenen Methoden der
Arrays
undList
s und auch der Unterschied zwischen++i
undi++
InformationsquelleAutor ojonugwa ochalifu