webForumDet fria alternativet

Räkna antal a i en textsträng

Java

10 svar · 612 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#1

Hej hur gör jag för att räkna ut detta:

exempel:
Skriv in en textsträng: ahsahad
Skriv en ett tecken som ska räknas: a

Det finns 3 st a i textsträngen.

Medlem sedan aug. 20021 752 inlägg
#2

Så här tex

String a="ahsahad";
int antal=0;
char find='a';
for(int i=0;i<a.length();i++)
  if(a.charAt(i)==find)
    antal++;
System.out.println("Det fanns "+antal+"st "+find);

/Viktor

Medlem sedan jan. 20013 406 inlägg
#3

Jag hade igentligen lyckats göra den här lilla funktionen men problemet ligger i att när jag läser in en bokstav i variabeln find så läser jag in den med readLine och då får det typen String.
Det går inte att gämföra charAt med String.

Nu är frågan hur omvandlar jag String till char?

Medlem sedan jan. 20013 406 inlägg
#4

Löste det själv.

char find = bokstav.charAt(0);
Medlem sedan aug. 20021 752 inlägg
#5

Kan du lägga ut koden?
Har inte gjort konsol program på några år så jag kommer inte ihåg hur man skriver :)

/Viktor

Medlem sedan jan. 20013 406 inlägg
#6

Här kommer den:
Om du undrar varför jag gör ett sådant här konstigt program så är det för att jag går en kurs och håller på med övningar.

import java.io.*;

// Denna klass innehåller starten för lab3.
public class Lab3 {
    /* main() är (som alltid) klassmetoden som utgör startpunkten då
       programmet exekveras. */
    public static void main(String[] args) throws IOException {
	

	/* Deklarera en (lokal) variabel som kan hålla reda på en
	   bokstavspusslare. */
	Bokstavspusslare minPusslare;

	/* Skapa bokstavspusslaren med hjälp av klassen/mallen
	   Bokstavspusslare samt låt variabeln hålla reda på det
	   nyskapade objektet. */
	minPusslare = new Bokstavspusslare();
	
	Bokstavsräknare minBokstavsräknare;
    minBokstavsräknare = new Bokstavsräknare();
	// Låt pusslaren jobba...
	minPusslare.pussla();
	minPusslare.skrivVälkomsttext();
	minBokstavsräknare.räknaBokstav();
	minBokstavsräknare.räknaBokstav();
    minBokstavsräknare.skrivTotalAntal();
    
    } // main()
} // Lab3
	

/* Denna klass beskriver en bokstavspusslare.  Bokstavspusslaren
   kommer i sin tur att ta hjälp av en bokstavsräknare. */
class Bokstavspusslare {
      
    /* "indata" kan användas för att läsa från tangentbordet.  Den är
       en instansvariabel och kan därför användas av alla metoder i
       denna klass. */
    BufferedReader indata = 
	new BufferedReader(new InputStreamReader(System.in));
			   
    /* "utdata" kan också utnyttjas i alla metoder i denna klass. */
    PrintStream utdata = System.out;

    /* Håll reda på vem som kör programmet med hjälp av
       instansvariabeln som deklareras här. */
    String användarnamn;

    /* Håll reda på bokstavsräknaren med hjälp av instansvariabeln
       som deklareras här. */
    int bokstavsräkanre;
    

    // Låter denna bokstavspusslare pussla lite...
    public void pussla() throws IOException {	
	utdata.println("Börjar pussla...");
	utdata.println();

    taRedaPåNamnet();
  	
    
	// Fler satser kommer här...

    } // pussla()

    // Skriver ut en kort välkomsttext på skärmen.
    public void skrivVälkomsttext() {
	
	utdata.println("Välkommen " + användarnamn + "!");
    } // skrivVälkomsttext()

    // Fler metoder() kommer här...

    public void taRedaPåNamnet() throws IOException {	
    
    utdata.print("Vad heter du? ");
    användarnamn = indata.readLine();
    
    }

} // Bokstavspusslare

class Bokstavsräknare{
	
	
	PrintStream utdata = System.out;
	BufferedReader indata = 
	new BufferedReader(new InputStreamReader(System.in));
	
	
	int antal;
	int totalAntal = 0;
	
	
	public void räknaBokstav() throws IOException {
		char bokstav;
		String text;
		utdata.print("Skriv in en textstrang: ");
		text = indata.readLine();
		utdata.print("Skriv in en bokstav: ");
		String b = indata.readLine();
		int s = text.length();
		antal = 0;
		bokstav = b.charAt(0);
		for (int i = 0; i < s; ++i)
		if (text.charAt(i) == bokstav)
		antal++;
		totalAntal = totalAntal +antal;
		utdata.println(text + " innhåller " + antal + " st " + bokstav + "!");
	
	}
	public void skrivTotalAntal(){
		utdata.println("Totalt skrevs " + totalAntal + " tecken ut");
		
	

	}
	
	
}
Medlem sedan aug. 20021 752 inlägg
#7

Missade visst att du hade löst det :) Blev lite förvånad när det fungerade direkt :)

/Viktor

Medlem sedan jan. 20013 406 inlägg
#8

Ok

Vet du förresten hur man kan få åäö att funka. Har läst trådarna här på webforum men inte fått det att funka

Medlem sedan aug. 20021 752 inlägg
#9

EDIT: Ser nu att det inte fungerar i utskriften från programmet.
EDIT2: Använd inte åäö i namn på funktioner och variabler.

Fungerar ganska bra för mig

Vad heter du? Öland Åland
Võlkommen Öland ?land!
Skriv in en textstrang: ÖÖÖäääÅÅÅ
Skriv in en bokstav: å
ÖÖÖäää??? innhÕller 0 st å!
Skriv in en textstrang: ååääöö
Skriv in en bokstav: f
ååääöö innhÕller 0 st f!
Totalt skrevs 0 tecken ut

Antar att du kör med Win98/ME som inte stödjer Unicode. Vet tyvärr inte hur man gör för att det ska fungera där.

/Viktor

Medlem sedan jan. 20013 406 inlägg
#10

Jag kör win2000

Medlem sedan jan. 20013 406 inlägg
#11

Det ska ju inte stå Võlkommen utan välkommen.
Det är det som jag vill komma till rätta med

258 ms totalt · 3 externa anrop · v20260731065814-full.a4a6ad0e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)