我应该要求用户输入一个字符串,我应该解析字符串并跟踪字母表的数量。所以像,如果用户输入字符串“ABEE” 它显示输出:JAVA - 存储字符串和字符串的数量
a: 1
b: 1
c: 0
e: 2
到目前为止,我已经能够得到字符串并解析它并保存元素到数组。而且我一次可以用for循环打印出每封信。现在我面临的问题是,当它打印出字母以及短语中存在多少字母时,这些数字不匹配。例如,如果我输入字母:“abccddee” 它打印出:
a: 1
b: 1
c: 1
c: 0
d: 0
d: 0
e: 0
e: 0
出于测试目的,我用我自己的字符串,而不是使用扫描仪。
import java.util.Scanner;
public class CountLetters
{
public static void main(String[] args)
{
//create arrays
String[] upper = new String[25];
String[] lowerChar = new String[25];
int [] lowerCharNum = new int[25];
Scanner input = new Scanner(System.in);
System.out.println("Please enter a phrase");
//grab phrase from user
String phrase = "abccddee";
//create array with the size of the phrase entered from user
String[] letters = new String[phrase.length()];
System.out.println("letters length: " + letters.length);
//separate every letter in phrase and store it into array "letters"
letters = phrase.split("");
for(int i=0; i<letters.length; i++)
{
lowerChar[i] = letters[i];
switch(letters[i])
{
case "a":
lowerCharNum[0] += 1;
break;
case "b":
lowerCharNum[1] += 1;
break;
case "c":
lowerCharNum[2] += 1;
break;
case "d":
lowerCharNum[3] += 1;
break;
case "e":
lowerCharNum[4] += 1;
break;
case "f":
lowerCharNum[5] += 1;
break;
}//end of switch
System.out.println(lowerChar[i] + ": " + lowerCharNum[i]);
}
}//end of main method
}//end of class
你为什么要从'String phrase'创建一个单独的'String'数组? –
因为分配我必须让程序解析大写字母和小写字母,所以我让字母数组来保存所有的字母数组,然后将它们分开到相应的upper和lowerChar数组中。 – rissandimo
@rissandimo:请注意,您的方法不能很好地扩展。我建议你阅读下面发布的答案。 – Bhoot