Avatar billede sandra26 Nybegynder
30. december 2000 - 03:38 Der 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++;
       
    }
   
    public int getResult()
    {
        return antal;
    }
   
    private int antal;
   
}
Avatar billede nico26 Nybegynder
30. december 2000 - 04:01 #1
fjern int foran antal i metoden undersoegForekomst
Avatar billede codebase Praktikant
30. december 2000 - 04:14 #2
NEJ, fejlen ligger her:

  public  class Forekomst  {

da du allerrede har en:

public class Demo

Avatar billede nico26 Nybegynder
30. december 2000 - 04:34 #3
jeg vil tro at de to klasser ligger hver for sig, og så er det ikke noget problem. Fejlen er at antal re-erklæres i metoden undersoegForekomst
Avatar billede lbhansen Nybegynder
30. december 2000 - 10:30 #4
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)
Avatar billede davsclaus Nybegynder
30. december 2000 - 10:41 #5
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.

--------------------------------------------------------------------------------
               

Avatar billede sandra26 Nybegynder
30. december 2000 - 11:38 #6
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?

                   
Avatar billede lbhansen Nybegynder
30. december 2000 - 11:52 #7
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å
Avatar billede sandra26 Nybegynder
30. december 2000 - 12:03 #8
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?
Avatar billede nico26 Nybegynder
30. december 2000 - 12:20 #9
det simpleste du kan gøre er at bruge args parmameteren, og så skrive java Demo \"Dette er en herlig sommer!\" m

public static void main(String[] args)
    { 
        Forekomst f1 = new Forekomst();
        f1.undersoegForekomst(args[0], args[1].charAt(0));
       
        System.out.println(f1.getResult());
    }
Avatar billede sandra26 Nybegynder
30. december 2000 - 12:41 #10
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
Avatar billede nico26 Nybegynder
30. december 2000 - 13:21 #11
sandra26 >>

import java.lang.System;
import java.io.*;

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);
       
        System.out.println(f1.getResult());
    }
}
Avatar billede sandra26 Nybegynder
30. december 2000 - 13:53 #12
nico22 tak for det..men det er ikke der problemet er..men her:
public void undersoegForekomst(String tekst, char tegn)
    {
        int antal = 0;

        for (int i = 0; i < tekst.length(); i++)
                    if (tekst.charAt(i) == \'m\')
                antal++;
       
    i stedet for at jeg skal skrive == \'m\'.....kan jeg skrive == tegn eller nóget lignende?
Avatar billede nico26 Nybegynder
30. december 2000 - 14:13 #13
ja du skriver bare if (tekst.charAt(i) == tegn)
Avatar billede nico26 Nybegynder
30. december 2000 - 14:16 #14
Men du er vel stadig nødt til at lave det sådan at brugeren selv kan indtaste noget tekst og et bogstav
Avatar billede sandra26 Nybegynder
30. december 2000 - 14:32 #15
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*
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