konstrukcja for (double a : suma)

0

Witam,
znalazłem w pewnym programie konstrucje
w konstruktorze klasy mamy kod ::
suma = new double[n];
oraz metode w tej samej klasie

public double getTotalsuma(){
double sum =0;
for (double a : suma) sum+=a; // tu problem
return sum;
}

moje pytanie co robi konstrukcja

for (double a : suma) sum+=a; 

oraz dlaczego czepia się jej kompilator
Pozdrawiam Wszystkich
Help [!!!]

0

to zadziala dla kolekcji np. List<Double> ale nie dla tablicy!

pozdrawiam

0

Dzięki :)
tylko co autor tego kodu miał na myśli ???

0

to zdziala dla tablicy, moze kompilator sie pluje poniewaz jest to kompilator starszej wersji javy, nowe petle foreach sa dostepne od wersji 5 javy
co mial na mysli
for (double d : suma) - lecac przez tablice typu double, pod zmienna d podstawiam kolejne jej elementy

sum += d - kolejny element z tablicy dodaj do poprzedniej wartosci zmiennej sum

krotko mowiac autor mial na mysli zsumowanie wszystkich elementow z tablicy double[] i wykonal to za pomoca petli tzw foreach

to samo po staremu:
double sum = 0;
for (int i = 0; i < suma.length; ++i) {
sum += suma[i];
}

0

Dokładnie. Poniższy kod kompiluje się w netbeansach 5.5 i 6.0 z Javą 1.5 i 1.6

double[] suma = new double[10]; 

public double getTotalsuma(){
double sum =0;
for (double a : suma) sum+=a; // tu problem
return sum;
0

ok tak się domyśłiłem i zamieniłem kod problem tylko w tym że mam zainstalowaną jave 1.6 i działam w Eclipce version=3.0.1 pod systemem win98 także zaczej nie rozumiałem dlaczego kompilator nie przyjmuje kodu który został opublikkwany w książce. Także z waszych porad wynika że problem jest w systemie badź w Eclipe. Ale tak jak napisaliście zamieniłem na

for(int i=0;a.length;i++) sum +=a[i];

tylko rzeczywiście szkoda że nie może skorzystać z petli foreach bo jest super[!!!]
Pozdrawiam

0

w eclispe mozna zmienic ustawienia projektu, w tym i kompatybilnosc z dana wersja javy - moze masz ustawiony kompilator na wersje ponizej 5 i dlatego kompilator sie plumka
prawym na projekcie -> properties -> chyba cos w stylu Compiler -> i tam gdzies sa takie opcje jak ustawienie docelowej wersji
pozdro

0

Miałeś racje wszystko teraz jest ok wcześniej była obsługiwana wersja 1.4 i dlatego się czepiał
Dzięki
Pozdrawiam

0

hmm.. czlowiek codziennie uczy sie czegos nowego....

1 użytkowników online, w tym zalogowanych: 0, gości: 1