JAVA: Räkna bokstäver i meningar.

Permalänk
Medlem

JAVA: Räkna bokstäver i meningar.

Om jag skriver in "Jag heter Magnus Larsson"
Så vill jag att denna kodsnudd ska kontrollera hur många "A","a" som finns i datan jag matade in.
Hur görs detta enklast? MVH

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Medlem

Du kan skapa en array eller lista med längden samma som så många unika tecken du kan tänkas räkna, tex 255 eller vad det brukar vara, annars kan du ta bara från alfabetet och kontrollera ascii nr, dvs konvertera till int, tex bokstav>=a && bokstav<=Z (engelska). För varje bokstav med ascii nr som passerar ditt vilkor plussar du på den platsen i din array, om du inte vill skilja på stora och små finns sätt att konvertera alla till små eller stora tecken. Du måste alltså loopa igenom din sträng tecken för tecken och kolla att tecknen är godkända, inom a-z tex. Det låter som en skoluppgift så det blir ingen kod för tillfället, men här har du en ide iaf.

Permalänk
Medlem

Tack

Förstår, mycket javatrådar nuförtiden. Detta är dock ett hobbyprojekt så jag vill kontrollera hur många tecken någon skriver in i ett textfält (t.ex versaler) för att således kunna ge användare ett meddelande som säger "Tagga ner med versalerna nu" .
Lite svårt att förklara just nu, lite trött

Tack ändå!

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Medlem

Denna metod räknar antalet stora bokstäver i en String

public static int countUpperCase(String word) { int uppderCase = 0; for (int i = 0; i < word.length(); i++) { if (Character.isUpperCase(word.charAt(i))) { //System.out.println(word.charAt(i)); uppderCase++; } } return uppderCase; }

eller för att kunna räkna på lite mer saker kan du göra en Map med en nyckel och ett värde, t.ex

import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class CountStuff { private Map<Character, Integer> letters = new HashMap<Character,Integer>(); public void countStuff(String word) { for (int i = 0; i < word.length(); i++) { Character key = word.charAt(i); if(letters.containsKey(key)){ int value = letters.get(key)+1; letters.put(key, value); } else { letters.put(key, 1); } } } public String toString(){ StringBuffer buffer = new StringBuffer(); Set<Character> set = letters.keySet(); for (Iterator<Character> iterator = set.iterator(); iterator.hasNext();) { Character character = iterator.next(); int numberOfCharacters = letters.get(character); buffer.append(character); buffer.append(" = "); buffer.append(numberOfCharacters); buffer.append("\n"); } return buffer.toString(); } public static void main(String[] args) { CountStuff s = new CountStuff(); s.countStuff("gf¤EFGF34FGd3#RGFH%¤"); System.out.println(s.toString()); } }

Input "gf¤EFGF34FGd3#RGFH%¤" ger output

f = 1
g = 1
E = 1
# = 1
F = 4
d = 1
G = 3
% = 1
H = 1
¤ = 2
3 = 2
4 = 1
R = 1

Men du behöver inte ha det såhär, inte optimalt eftersom nu lagrar map:en data efter varje metodanrop. Möjligt att göra det bättre men ville vissa hur man kan göra.