Avatar billede kirky Nybegynder
28. november 2002 - 12:45 Der er 3 kommentarer og
3 løsninger

længde af array i en løkke

Hvorfor kan jeg ikke bruge "tal.length" for at bestemme hvor mange gange løkken skal køres igennem. Det virker fint nok, hvis jeg sætter det til: for(int i = 0 ; i <= tal[11] ; i++). Problemet er at arrayet skulle gerne kunne blive mindre eller større, uden at koden skulle tilpasses til det.


public class AD {

    public static void main(String[] args) {
   
    int[] tal = {8, 4, 2, 15, 11, 5, 8, 6, 3, 92, 7, 10};
   
    int max = 0;
           
        for(int i = 0 ; i <= tal.length ; i++){
           
            if(tal[i] < tal[i+1]){
                if(tal[i+1] > max){
                    max = tal[i+1];
                }
            }
           
            else {
                if(tal[i] > tal[i+1]){
                    if(tal[i] > max){
                        max = tal[i];
                    }
                  }               
            }
        }
   
    System.out.println("max: " + max);
   
   
                   
    }
       
}
Avatar billede arne_v Ekspert
28. november 2002 - 12:51 #1
< tal.length

bør virke !
Avatar billede arne_v Ekspert
28. november 2002 - 12:51 #2
Du har 12 elementer. De er indexeret 0..11.
Og derfor skal du bruge < 12 og ikke <= 12.
Avatar billede aslan Nybegynder
28. november 2002 - 12:51 #3
for(int i = 0 ; i < tal.length ; i++){
Avatar billede articfruit Nybegynder
28. november 2002 - 12:58 #4
Skriv tal[i++] i stedet for tal[i+1], samt det som de to andre også har svaret-
Avatar billede kirky Nybegynder
28. november 2002 - 13:03 #5
nej nej Arne! Det er ikke det der er problemet.  Hvis arrayet f.eks. er 15 eller 3 entries lang, så skal koden gerne ved hjælp af tal.length bestemme hvor mange gange løkke skal køres igennem. Den kaster en array index out of bounds exception, når man bruger < eller <=!
Avatar billede kirky Nybegynder
28. november 2002 - 13:08 #6
Problemet er løst:

for(int i = 0 ; i < tal.length-1 ; i++){

og så fungere det. Til dels havde I alle ret. Så I får alle point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester