如何打印出阵列?

时间:2014-11-20 03:39:09

标签: java arrays string frequency

我几乎完成了我的练习,除了我似乎无法弄清楚如何显示数组。实践是从用户获取一组长度为10的字符串,并检查字符串中是否有一个数字0-9对应于长度为10的数组。

这是我到目前为止所做的。

import java.util.*;

public class CharacterFrequency {

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    int telNumber[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

    System.out.print("Give me a word of 10 characters. "
            + "\nI will tell you if it contains any numbers, and how many: ");
    String word = keyboard.nextLine();
    int length = word.length();
    if (length < 10 || length > 10) {
        System.out.println("Wrong length, you have entered an invalid word.");
        System.exit(0);
    } else {


        for (int index = 0; index < word.length() - 1; index++) {
            char ch = word.charAt(index);
            if ('0' == ch) {
                telNumber[0]++;
            } else if ('1' == ch) {
                telNumber[1]++;
            } else if ('2' == ch){
                telNumber[2]++;
            } else if ('3' == ch){
                telNumber[3]++;
        }   else if ('4' == ch){
                telNumber[4]++;
        }else if ('5' == ch){
                telNumber[5]++;
        }else if ('6' == ch){
                telNumber[6]++;
        } else if ('7' == ch){
                telNumber[7]++;
        } else if ('8' == ch){
                telNumber[8]++;
        }else if ('9' == ch){
                telNumber[9]++;
        } else {
        System.out.println("\nWrong length, you have entered an invalid word.");
        System.exit(0);
    }
        }
        System.out.println();

    }
}
}

我无法弄清楚如何打印出如下所示的输出:

0的计数是(字符串中的0的数字)

1的计数是(字符串中的数字1)

2的计数是(字符串中的2的数量)

3的数量是(字符串中的3的数量)

4的计数是(字符串中的4的数量) 等

3 个答案:

答案 0 :(得分:3)

一般来说,打印int数组的最简单方法可能是Arrays.toString(int[])

System.out.println(Arrays.toString(telNumber));

您对telNumber的声明应该更像是,

int telNumber[] = new int[10]; // {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

你的声明给每个元素一个初始计数等于它的索引(我很确定你希望它们为零)。然后,获得您要求的格式(使用printf()for循环)可能看起来像

for (int i = 0; i < telNumber.length; i++) {
  System.out.printf("Count of %d is %d%n", i, telNumber[i]);
}

最后,使用Character.digit(char, int)

可以大大缩短您的长if else链。
if (ch >= '0' && ch <= '9') {
    telNumber[Character.digit(ch, 10)]++;
} else {
    System.out.println("\nWrong length, you have entered an invalid word.");
    System.exit(0);
}

答案 1 :(得分:0)

几乎无法改变:

1)telNumber数组初始化,另一个选项是:

int telNumber[] = new int[10];

2)使用:

,根据char值的ascii值,使用一个赋值来避免所有10个if。
telNumber[ch - '0'] ++;

以获取更多参考: ascii table

3)遍历数组并打印出来

for (int i = 0; i < telNumber.length; i++) {
                  System.out.printf("Count of %d is %d%n", i, telNumber[i]);
                }

4)将循环固定为:

for (int index = 0; index < word.length() ; index++)

因为在你的代码中它不会计算输入中的最后一个字符。

固定代码:

Scanner keyboard = new Scanner(System.in);
        int telNumber[] = { 0,0,0,0,0,0,0,0,0,0};

        System.out
                .print("Give me a word of 10 characters. "
                        + "\nI will tell you if it contains any numbers, and how many: ");
        String word = keyboard.nextLine();
        int length = word.length();
        if (length < 10 || length > 10) {
            System.out
                    .println("Wrong length, you have entered an invalid word.");
            System.exit(0);
        } else {

            for (int index = 0; index < word.length() ; index++) {
                char ch = word.charAt(index);
                if (ch >= '0' && ch <= '9') {
                telNumber[ch - '0'] ++;
                }
                else {
                  System.out.println("\nWrong length, you have entered an invalid word.");
                  System.exit(0);
                }
            }
            System.out.println();

        }
        for (int i = 0; i < telNumber.length; i++) {
              System.out.printf("Count of %d is %d%n", i, telNumber[i]);
            }
    }

答案 2 :(得分:-2)

public static void printIntArray(int[] array) {
    System.out.print("{");

    for (int i = 0; i < array.length - 1; i++)
        System.out.print (array[i] + ", ");

    System.out.println(array[array.length - 1] + "}");
}