2 svar
41 visningar
Faxxi är nöjd med hjälpen!
Faxxi 122
Postad: 22 sep 2019 Redigerad: 22 sep 2019

Lista både index och filnamn med ArrayList

Hej!

Jag har den befintliga koden: 

/**
* Show a list of all the files in the collection.
*/
public void listAllFiles()
{
for(String filename : files)
{
System.out.println(filename);
}
}

och följande uppgift:

"The for-each loop does not use an explicit integer variable to access successive elements of the list. Thus, if we want to include the index of each file name in the listing, then we would have to declare our own local integer variable (position, say) so that we can write in the body of the loop something like:

System.out.println(position + ": " + filename);

See if you can complete a version of listAllFiles to do this. Hint: You will need a local variable declaration of position in the method, as well as a statement to update its value by one inside the for-each loop. One of the things this exercise illustrates is that the for-each loop is not really intended to be used with a separate index variable."

Jag förstår verkligen inte hur detta ska gå till. Mina funderingar:

1) Jag vet att vi ska lägga in en lokal variabel som heter position. Jag vet hur man lägger in lokala variabler i övriga fall, men här funkar det inte att göra som man brukar. Att lägga in private int position; efter första { ger alltså error. Och det ligger redan en variabel efter for, nämligen String filename, så där är det redan "fullt". Hur ska jag isåfall lägga in en ny variabel? Jag har funkat att lägga in en till variabel efter String filename med , (kommatecken) men det funkar inte heller.

2) Index ska uppdateras med +1 för varje loop. Hur ska man göra det? Har det något med size att göra? Öka ett variabelvärde kan man ju göra med t.ex. [variabel] += 1, men jag vet inte hur jag ska implementera detta med ArrayList.

AlvinB 3328
Postad: 22 sep 2019

Tanken är att du skall deklarara variabeln utanför for-loopen:

public void listAllFiles() {

    int position = ...;

    for (String filename : files) {

       ....

    }

}

Därefter får du lägga till en kodrad inuti for-loopen som ökar värdet på position.

Faxxi 122
Postad: 27 sep 2019

Ahaaa. Ja, nu blev det rätt. Tack så mycket!

Svara Avbryt
Close