Gå til innhold

Finne indeks i arrays?


Anbefalte innlegg

Jeg har skrevet følgende kode:

 

public class ArrayMethods1 {

public static void main(String[] args) {

String fotballSpiller = "Ronaldinho";

}

public static char metode1(String fotballSpiller) {

char tegn1 = fotballSpiller.indeksOf('2');
return (tegn1);

System.out.println("Tegn nr 2 i strengen er "+ tegn1);


  }
}

 

Dette programmet skal hente ut et tegn i fra posisjon 2 (dvs nr 3) fra strengen min. Når jeg kompilerer får jeg følgende feilmelding:

 

"java:11: cannot find symbol

symbol : method indeksOf(char)

location: class java.lang.String

char tegn1 = fotballSpiller.indeksOf('2');

^ (under punktum)

1 error

 

Tool completed with exit code 1"

 

Noen som vet hva som er galt?

Endret av apwr
Lenke til kommentar
Videoannonse
Annonse

Takker for svar!

 

La oss si at jeg skal lage en array med noen tall i. Denne velger jeg som første parameter, og en int verdi som andre element. Programmet skal returnere indeksen til det første elementet i arrayen som samsvarer med det andre parameteret, dvs int-verdien. Alt dette ved hjelp av indexOf-metoden.

 

Noen som kan dette?

Endret av apwr
Lenke til kommentar

Jeg har laget dette programmet:

 

public class ArrayMethods1 {

public static void main(String[] args) {

int[] tallRekke = new int[] {2,5,4,787,4,78};

}

public static int tallMetode(int tallRekke) {

int verdi1 = tallRekke.IndexOf(4);

System.out.println("Indeksen til det valgte tallet er "+verdi1);

  }

}

 

Jeg skal hente ut indeksen til den første verdien av 4. Når jeg kompilerer programmet får jeg en feilmelding.

 

"ArrayMethods1.java:11: int cannot be dereferenced

int verdi1 = tallRekke.IndexOf(4);

^(hake under punktum mellom tallRekke og indexOf)

1 error

 

Tool completed with exit code 1"

 

Er det noen som vet hva som er galt?

Lenke til kommentar

Her var det mye feil :no:

- Du kjører aldri metoden tallMetode inni main, du må ha et metodekall.

- Metoden må være void siden du ikke returnerer noe.

- Metoden må ta inn int[] tallRekke og index som man vil finne som argument,

evt la tabellen være en klassevariabel, da kan den bruker overalt i klassen.

- Man bruker ikke indexOf på tabeller men

enTabell[etTallSomErIndexenSomManvilHa];

indexOf() bruker man på String.

Lenke til kommentar

Takker for svar igjen! Og nei, jeg er ikke særlig stø i når det kommer til programmering ;)

 

Oppgaven går som følger:

 

The indexOf method takes an int array as the first parameter and an int value as the second parameter.

It must return the index of the first element in the array where the specified int value is found, or -1 if the element is not present.

 

Kan jeg bruke en String til å lagre en rekke tallverdier?

 

Her er koden jeg har nå:

 

public class ArrayMethods1 {

public static void main(String[] args) {


tallMetode();
}

public static void tallMetode() {

String tallRekke = "2,5,4,787,4,78";

int verdi1 = tallRekke.indexOf();

System.out.println("Indeksen til det valgte tallet er "+verdi1);

  }

}

 

Det kan godt være jeg er helt på jordet nå. Hva er feil?

Endret av apwr
Lenke til kommentar

-I følge oppgaveteksten ser det ut til at du skal metoden skal returnere en int, da bruker man ikke void men int, void brukes om metoden ikke skal retunere noe.

-Videre står det at metoden skal ta inn en tabell som første argument og et tall som andre

- Du må bruke en forløkke som sjekker tallenei tabellen om de er lik siste argument i metoden og finner den en som er lik så skal du returnere indexen der hvorden fant tallet.

-Det virker som du tror du skal bruke indexOf() metoden til Stirng, men oppgaven sier at du skal skrive en indexOf ()metode selv.

public class ArrayMethods1 {
 public static void main(String[] args) {
       tallMetode();
}

public static void tallMetode(tabellInnHer,tallInnHer) {

//Dette er ikke en int Array og den kommer ikke inn som argument
String tallRekke = "2,5,4,787,4,78";
      // :hmm:  :no:        tallrekke er string og du prøver å sette den til en int?
int verdi1 = tallRekke.indexOf();
Jaja her var da noe rett-->System.out.println("Indeksen til det valgte tallet er "+verdi1);
  }
}

 

Ikke for å være slem men det virker som du har problemer med forståelsen av både java og engelsk og jeg må på det sterkeste anbefale at du rusler til et bibliotek og se om de har boka Rett på java

Den er enkel og grei til å starte med og er på norsk, etterhvert så finner du fram en bedre bok som går mere i dybden på java.

Men for all del ikke gi opp programmering, det er morsomt men det er viktig å få inn det grunnleggende på en god måte.

Endret av Qwark
Lenke til kommentar

Jeg har en javabok (Java som første programeringsspråk) og har lest en del i den. Har ikke kommet langt nok til å løse slike oppgaver enda, derfor spør jeg dere om hjelp.

Men får vel prøve å løse denne oppgaven nok en gang...Begynner å bli litt lei nå etter utallige mislykkede forsøk. :(

Lenke til kommentar

Hvordan ser det ut nå?

 

public class ArrayMethods1 {

public static void main(String[] args) {


int[] tallRekke = new int[] {3,6,45,3,7,9,1};


}

public static int tallMetode(tallRekke, 6) {

forsteIndeks = tallRekke[0];

for(int indeks=0; indeks < tallRekke.length; indeks++) {
if (forsteIndeks == tallRekke[indeks])

//Her må det gjøres noe. Hvordan skal jeg implementere 6-tallet i denne løkka?


System.out.println("Indeksen til det valgte tallet er "+tallRekke[indeks]);


   }
 }
}

Endret av apwr
Lenke til kommentar

Veldig bra, du nærmer deg

nå er du kommet så langt at jeg kan poste mitt forslag.

public class Indexfinder {

    public static void main(String[] args) {

        int[] tabell = new int[] {3,6,45,3,7,9,1};

        int tallSomViVilFinne = 7;

        int plassITabellen = tallMetode(tabell,tallSomViVilFinne);

        //Om tallet finnes i tabellen så...

        if(plassITabellen != -1){

            System.out.println("Indeksen til det valgte tallet er "+ plassITabellen);

        //hvis ikke så...

        }else System.out.println("Fant ikke tallet i tabellen");

    }

   

    public static int tallMetode(int[] tab,int tall) {

        for(int indeks=0; indeks < tab.length; indeks++) {

            if (tall == tab[indeks]){

                return indeks;

            }

        }return -1; //returnerer -1 om tallet ikke finnes i tabellen

    }

}

Lenke til kommentar

Jeg sliter litt med å hente ut indeksen til den laveste verdien. Søket starter fra en bestemt indeks.

 

Her er koden:

 

public class ArrayMethods1 {

public static void main(String[] args) {


int[] tallRekke = new int[] {1,6,45,3,7,9,5};

int tall1 = 9;
int tall2 = 3;

int plass = tallMetode(tallRekke, tall1);
int plass2 = tallMetode2(tallRekke, tall2);

if(plass != -1) {
System.out.println("Indeksen til det valgte tallet er "+plass);
}
else System.out.println("Tallet finnes ikke i tabellen");

System.out.println("Indeksen til den laveste verdien er "+plass2);
}

public static int tallMetode(int[] tallRekke, int tall1) {


for(int indeks=0; indeks < tallRekke.length; indeks++) {
if (tall1 == tallRekke[indeks]) {
return indeks;

     }
   } return -1;
 }

public static int tallMetode2(int[] tallRekke, int tall2) {

for(int indeks=tall2; indeks < tallRekke.length; indeks++) {
if(tall2 < tallRekke[indeks]) {   // Det er denne jeg sliter med
 return indeks;

}
  } return -1;
 }
}

 

Tips?

Lenke til kommentar

for(int indeks=tall2; indeks < tallRekke.length; indeks++) {

if(tall2 < tallRekke[indeks]) {

for(int indeks=tall2; indeks < tallRekke.length; indeks++) 

Det som står her er:

start å telle fra plass tall2(som var 3) Hvorfor det, vil du ikke se igjenom hele tabellen?

 

if(tall2 < tallRekke[indeks]) { 

Hvis tall2(Som fortsatt er 3) er mindre en tallet som ligger i tallRekke[indeks]

så vil du at metoden skal returnere gitt indeks? hva om første tall i tabellen er 25, da vil den returnere 0 for alle tall under 25 :roll:

Lenke til kommentar

Oppgaven:

 

"The method has to search through the array starting at the index specified by the second parameter and return the index of the lowest value."

 

Den skal starte å søke på plassen angitt av det andre parameteret.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...