编写一个程序,确定名称中每个字母的数量

时间:2015-10-26 23:36:24

标签: java

以下是我必须执行的程序的说明/示例:

  

您好!请输入您的名字。你好

     

谢谢。现在输入你的姓氏。杜迪

     

你的名字是你好,你的姓是Doody。多么漂亮的一个   你有名字!!

     

您的名字包含5个字母,您的姓氏包含5个字母   字母。

     

您的姓名缩写为:H D

     

您的姓名包含:

     

3 d&#39>

     

1小时

     

3 o'

     

1 w

     

2 y'

     好吧,你好,杜迪,这很有趣。再见!

我可以一直走到名字中的字母数量。我的老师说了一些关于ASCII字符集的东西,我只需要1 for for循环。我不知道大多数数组和其他类型的东西,我想要一些如何使它成为一个循环的帮助。到目前为止,这是我的代码:

    import java.util.Scanner;

public class CoolSet2Problem4
{
    public static void main(String[] args)
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Hello! Please enter your first name in all lower case:");
        String firstname = keyboard.next();
        System.out.println(); //this is just so it looks nice with another space
        System.out.println("Thank you. Now enter your last name in all lower case:");
        String lastname = keyboard.next();
        System.out.println(); //this is just so it looks nice with another space
        System.out.println("You first name is " + firstname + ", and your" + "\n" + "last name is " + lastname + ".");
        System.out.println("WHAT A NICE NAME YOU HAVE!!");
        System.out.println(); //this is just so it looks nice with another space
        int fnl = firstname.length();
        int lnl = lastname.length();
        System.out.println("Your first name countains " + fnl + " letters,");
        System.out.println("and your last name countains " + lnl + " letters.");
        System.out.println(); //this is just so it looks nice with another space
        char fni = firstname.charAt(0);
        char lni = lastname.charAt(0);
        System.out.println("Your initials are: " + fni + " " + lni);
        System.out.println(); //this is just so it looks nice with another space

    int acount = 0; int bcount = 0; int ccount = 0; int dcount = 0; int ecount = 0; int fcount = 0; int gcount = 0; 
    int hcount = 0; int icount = 0; int jcount = 0; int kcount = 0; int lcount = 0; int mcount = 0; int ncount = 0;
    int ocount = 0; int pcount = 0; int qcount = 0; int rcount = 0; int scount = 0; int tcount = 0; int ucount = 0;
    int vcount = 0; int wcount = 0; int xcount = 0; int ycount = 0; int zcount = 0;

    for (int k = 0; ( (k < fnl) && (k < lnl) ); k++)
    {
        if (firstname.charAt(k) == ('a' | 'A')) acount++;
        if (lastname.charAt(k) == ('a' | 'A')) acount++;
        if (firstname.charAt(k) == ('b' | 'B')) bcount++;
        if (lastname.charAt(k) == ('b' | 'B')) ccount++;
        if (firstname.charAt(k) == ('c' | 'C')) ccount++;
        if (lastname.charAt(k) == ('c' | 'C')) dcount++;
        if (firstname.charAt(k) == ('d' | 'D')) dcount++;
        if (lastname.charAt(k) == ('d' | 'D')) dcount++;
        if (firstname.charAt(k) == ('e' | 'E')) ecount++;
        if (lastname.charAt(k) == ('e' | 'E')) ecount++;
        if (firstname.charAt(k) == ('f' | 'F')) fcount++;
        if (lastname.charAt(k) == ('f' | 'F')) fcount++;
        if (firstname.charAt(k) == ('g' | 'G')) gcount++;
        if (lastname.charAt(k) == ('g' | 'G')) gcount++;
        if (firstname.charAt(k) == ('h' | 'H')) hcount++;
        if (lastname.charAt(k) == ('h' | 'H')) hcount++;
        if (firstname.charAt(k) == ('i' | 'I')) icount++;
        if (lastname.charAt(k) == ('i' | 'I')) icount++;
        if (firstname.charAt(k) == ('j' | 'J')) jcount++;
        if (lastname.charAt(k) == ('j' | 'J')) jcount++;
        if (firstname.charAt(k) == ('k' | 'K')) kcount++;
        if (lastname.charAt(k) == ('k' | 'K')) kcount++;
        if (firstname.charAt(k) == ('l' | 'L')) lcount++;
        if (lastname.charAt(k) == ('l' | 'L')) lcount++;
        if (firstname.charAt(k) == ('m' | 'M')) mcount++;
        if (lastname.charAt(k) == ('m' | 'M')) mcount++;
        if (firstname.charAt(k) == ('n' | 'N')) ncount++;
        if (lastname.charAt(k) == ('n' | 'N')) ncount++;
        if (firstname.charAt(k) == ('o' | 'O')) ocount++;
        if (lastname.charAt(k) == ('o' | 'O')) ocount++;
        if (firstname.charAt(k) == ('p' | 'P')) pcount++;
        if (lastname.charAt(k) == ('p' | 'P')) pcount++;
        if (firstname.charAt(k) == ('q' | 'Q')) qcount++;
        if (lastname.charAt(k) == ('q' | 'Q')) qcount++;
        if (firstname.charAt(k) == ('r' | 'R')) rcount++;
        if (lastname.charAt(k) == ('r' | 'R')) rcount++;
        if (firstname.charAt(k) == ('s' | 'S')) scount++;
        if (lastname.charAt(k) == ('s' | 'S')) scount++;
        if (firstname.charAt(k) == ('t' | 'T')) tcount++;
        if (lastname.charAt(k) == ('t' | 'T')) tcount++;
        if (firstname.charAt(k) == ('u' | 'U')) ucount++;
        if (lastname.charAt(k) == ('u' | 'U')) ucount++;
        if (firstname.charAt(k) == ('v' | 'V')) vcount++;
        if (lastname.charAt(k) == ('v' | 'V')) vcount++;
        if (firstname.charAt(k) == ('w' | 'W')) wcount++;
        if (lastname.charAt(k) == ('w' | 'W')) wcount++;
        if (firstname.charAt(k) == ('x' | 'X')) xcount++;
        if (lastname.charAt(k) == ('x' | 'X')) xcount++;
        if (firstname.charAt(k) == ('y' | 'Y')) ycount++;
        if (lastname.charAt(k) == ('y' | 'Y')) ycount++;
        if (firstname.charAt(k) == ('z' | 'Z')) zcount++;
        if (lastname.charAt(k) == ('z' | 'Z')) zcount++;
    }
    System.out.println(); //this is just so it looks nice with another space
    System.out.println(firstname + " " + lastname + " contains " + acount + " a\'s");
    System.out.println(firstname + " " + lastname + " contains " + bcount + " b\'s");
    System.out.println(firstname + " " + lastname + " contains " + ccount + " c\'s");
    System.out.println(firstname + " " + lastname + " contains " + dcount + " d\'s");
    System.out.println(firstname + " " + lastname + " contains " + ecount + " e\'s");
    System.out.println(firstname + " " + lastname + " contains " + fcount + " f\'s");
    System.out.println(firstname + " " + lastname + " contains " + gcount + " g\'s");
    System.out.println(firstname + " " + lastname + " contains " + hcount + " h\'s");
    System.out.println(firstname + " " + lastname + " contains " + icount + " i\'s");
    System.out.println(firstname + " " + lastname + " contains " + jcount + " j\'s");
    System.out.println(firstname + " " + lastname + " contains " + kcount + " k\'s");
    System.out.println(firstname + " " + lastname + " contains " + lcount + " l\'s");
    System.out.println(firstname + " " + lastname + " contains " + mcount + " m\'s");
    System.out.println(firstname + " " + lastname + " contains " + ncount + " n\'s");
    System.out.println(firstname + " " + lastname + " contains " + ocount + " o\'s");
    System.out.println(firstname + " " + lastname + " contains " + pcount + " p\'s");
    System.out.println(firstname + " " + lastname + " contains " + qcount + " q\'s");
    System.out.println(firstname + " " + lastname + " contains " + rcount + " r\'s");
    System.out.println(firstname + " " + lastname + " contains " + scount + " s\'s");
    System.out.println(firstname + " " + lastname + " contains " + tcount + " t\'s");
    System.out.println(firstname + " " + lastname + " contains " + ucount + " u\'s");
    System.out.println(firstname + " " + lastname + " contains " + vcount + " v\'s");
    System.out.println(firstname + " " + lastname + " contains " + wcount + " y\'s");
    System.out.println(firstname + " " + lastname + " contains " + xcount + " x\'s");
    System.out.println(firstname + " " + lastname + " contains " + ycount + " y\'s");
    System.out.println(firstname + " " + lastname + " contains " + zcount + " z\'s");
}

}

任何帮助将不胜感激。

我知道这很长,但这是我知道的唯一方法。

2 个答案:

答案 0 :(得分:1)

最简单的解决方案是使用26个元素数组来表示计数:

int[] letterCounts = new int(26);

然后循环浏览名称中的字母,例如

for (char ch: (firstname+lastname).toLowerCase().toCharArray()) {
}

在循环体中,将char ch转换为int,并将变量97转换为a的ascii代码:

    int c = ((int)ch)-97;

这使用了char实际上只是一个int的事实 - (int)位'将char ch强制转换为int。然后使用它来解决数组:

letterCounts[c] = letterCounts + 1;

在循环之后,你应该再次循环,这次打印出数组内容和相关的字母,如下所示:

for(int i = 0; i < 26; i++) {
  System.out.print(((char)i+97));
  System.out.printLn(" " + letterCounts[i]);
}

这里我们再次使用强制转换,但这次我们将一个int i + 97转换回char,以便可以打印它。我们添加了97,因为当i为0时,向它添加97使其成为97,当这是char时,它是字母a

答案 1 :(得分:0)

这样的事情应该起作用。但它仍然可以更简单,写得更好。

:set mouse=a