我几乎完成了我的练习,除了我似乎无法弄清楚如何显示数组。实践是从用户获取一组长度为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的数量) 等
答案 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] + "}");
}