سؤال

I'm working on a code to count the amount of spaces/digits/letters inside a given input using a loop. I am trying to use the .isdigit() and .isalpha() method to see if each letter in the string is a letter or number, and if true, adding it to the count. My code looks perfect to me, but when I run it, I only get the count for length and spaces (Which is not using the .isspace() method) Perhaps I am messing up when updating the count within my loop but again.. it all looks good to me, could anyone help steer me in the right direction?

def main():
    sentence = input('Enter a sentence: ')
    printStats(sentence)

def printStats(input):
    print('Statistics on your sentence: ')
    print('   Characters:', charCount(input))
    print('   Letters:', letterCount(input))
    print('   Digits:', digitCount(input))
    print('   Spaces:', spaceCount(input))

def charCount(input):

    for char in input:
        return len(input)

#Section below is where I need help
def letterCount(input):
    count=0
    for letter in input:
        if input.isalpha():
        count += 1
    return count

def digitCount(input):
    count=0
    for digit in input:
        if input.isdigit():
        count += 1
    return count
#Section above is where I need help

def spaceCount(input):
    for space in input:
         return input.count(" ")

main()

Thanks for your time

هل كانت مفيدة؟

المحلول 2

You need to do letter.isalpha() and digit.isdigit() instead of calling them on the entire input.

نصائح أخرى

    package com.drools;

    public class TEST {
        public static void main(String[] args) {

             int charCount = 0;
                int digitCount = 0;
            String word = "NEW YORK 1";
            String data[];
            int k = 0;
            data = word.split("");
            int data1 = word.length();
            char temp;
            for (int i1 = 0; i1 < word.length(); i1++) {
                temp = word.charAt(i1);
                if (Character.isLetter(temp)) {
                    charCount++;
                } else if (Character.isDigit(temp)) {

                digitCount++;

            for (int i = 0; i < data.length; i++) {
                if (data[i].equals(" ")) {
                    k++;
                }

            }
            System.out.println("total count "+ data1 + "||number of spaces in the entire word "+ k + " ||characters  " + charCount+ "  || digits" + digitCount);

        }
            }}
    }

**Out put:**
total count 10||number of spaces in the entire word 2 ||characters  7  || digits1
  import java.util.Scanner;
  import java.util.regex.Matcher;
  import java.util.regex.Pattern;

public class LettersDigitsSpace {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    Pattern pletter = Pattern.compile("[a-zA-Z]");
    Pattern pdigit = Pattern.compile("\\d");
    Pattern pwhitespace = Pattern.compile("\\s");

    System.out.println();
    System.out.println("-------------------------------------------------");
    System.out.println("--- Letters, Digits, and White Spaces counter ---");
    System.out.println("-------------------------------------------------");
    System.out.println();
    System.out.println("Enter String: ");
    String val = input.nextLine();
    Matcher mletter = pletter.matcher(val);
    Matcher mdigit = pdigit.matcher(val);
    Matcher mspace = pwhitespace.matcher(val);

    int countl = 0, countd = 0, counts = 0;
    while (mletter.find()) {
        countl++;
    }
    while (mdigit.find()) {
        countd++;
    }
    while (mspace.find()) {
        counts++;
    }

    System.out.println("\nLetter count: "+countl+"\nDigit count: " + countd + "\nWhite Space count: " + counts);
}
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top