30. december 2000 - 03:38Der er
14 kommentarer og 1 løsning
antal af bestemte bogstaver i en tekst string
den her kode skulle gerne sende en tekstString og en bogstav som input til metoden Forekomst....som så skulle returnere antal af gange bostavet forekommer i tekstString..men den vil ikke??? public class Demo { public static void main(String[] args) { String tekst = \"Dette er en herlig sommer!\"; char bogstav = \'m\';
Forekomst f1 = new Forekomst(); f1.undersoegForekomst(tekst, bogstav);
System.out.println(f1.getResult()); } }
public class Forekomst { public Forekomst() { antal = 0; }
public void undersoegForekomst(String tekst, char tegn) { int antal = 0;
for (int i = 0; i < tekst.length(); i++) if (tekst.charAt(i) == \'m\') antal++;
det er korrekt. Når du har en instansvariabel, og erklarer en variabel med samme navn i en metode, vil metoden manipulere den variabel, som er inden for dens eget scope(metoden selv)
Når du sammenligner stregne/char\'s skal du ikke bruge == operatoren men equals metoden på String/Character istedet.
if ( tekst.charAt(i).equals(\'m\') ) antal++;
JavaDoc for Character ===================== equals public boolean equals(Object obj) Compares this object against the specified object. The result is true if and only if the argument is not null and is a Character object that represents the same char value as this object. Overrides: equals in class Object Parameters: obj - the object to compare with. Returns: true if the objects are the same; false otherwise.
det var godt nok ikke smart af mig at erkælere int antal to gange......men, det var fejlen. davsclaus: Når jer skriver ( tekst.charAt(i).equals(\'m\')...siger den Forekomst.java:12: Can\'t invoke a method on a char. Forresten, hvordan gør jeg at den tekst.charAt(i) sammenligner med parametren tegn og at jeg ikke behøver skrive \'m\' inde i metoden, men at det er inde i main at jeg bestemmer hvad for et tegn det skal være?
equals har kun sin beretigelse når man arbejder med objekter. metoden charAt(int) på en String returnerer en char(primitiv type), som man derfor ikke kan kalde metoder på
så dvs. det er fint nok med tekst.charAt(i) == \'m\' som jeg har lavet.... hvad med det at jeg kan sammenligne med et parameter og ikke et i metoden forudbestemt tegn?
nico..det ser godt nok snart ud, men så langt er vi ikke kommet......det skal være noget i stil om at man beder brugeren om at indtasten en eller anden bogstav og så skal det bogstav sendes videre til metoden, hvis det altså kan lade sig gøre på den måde
public class Demo { public static void main(String[] args) throws IOException { BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); System.out.print(\"Skriv noget tekst: \"); System.out.flush(); String tekst = r.readLine(); System.out.print(\"Skriv et bogstav: \"); System.out.flush(); char bogstav = r.readLine().charAt(0); Forekomst f1 = new Forekomst(); f1.undersoegForekomst(tekst, bogstav);
jo..det skal jeg....men det kan jeg godt finde ud af....vidste bare ikke hvordan man skulle få det til at virke inde i metoden. tak for hjælpen.......*s*
Synes godt om
Ny brugerNybegynder
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.