Java 计算队列中以相同字母开头的国家/地区名称的总数
我感兴趣的是如何计算队列中以相同第一个字符开头的名称的数量 我的程序将要求用户输入几个名称,这些名称将存储在一个队列中。但是,我需要计算队列中以相同第一个字符开头的名称的数量。我该怎么做?我是java新手,所以我知道的不多 它应该打印以下统计信息:Java 计算队列中以相同字母开头的国家/地区名称的总数,java,arrays,arraylist,stack,queue,Java,Arrays,Arraylist,Stack,Queue,我感兴趣的是如何计算队列中以相同第一个字符开头的名称的数量 我的程序将要求用户输入几个名称,这些名称将存储在一个队列中。但是,我需要计算队列中以相同第一个字符开头的名称的数量。我该怎么做?我是java新手,所以我知道的不多 它应该打印以下统计信息: -队列中以同一字母开头的国家名称总数。 -要计算上述统计信息,可以使用其他数据结构,如Array或ArrayList/Vector 例如: 用户输入/队列中的内容: 巴西 意大利 新加坡 西班牙 瑞士 冰岛 输出: 以I:2开始的国家总数 以S开头的
-队列中以同一字母开头的国家名称总数。
-要计算上述统计信息,可以使用其他数据结构,如Array或ArrayList/Vector 例如: 用户输入/队列中的内容:
这是我目前的计划 如果您不能使用任何Java集合,您可以简单地为每个可能的字符创建一个由零填充的int数组,然后将队列中字符串的每个第一个字符转换为int,并增加该数组索引。比如:
// on start of program
int[] charCounts = new int[1024];
for (int i = 0; i < charCounts.length; ++i)
{
charCounts[i] = 0;
}
// your loop
System.out.println("List of countries visited: ");
for(int i=0; i<randNum; i++)
{
System.out.print((i+1)+". ");
if (!myQueue.isEmpty())
{
String s = (String)myQueue.dequeue();
int charCode = Character.getNumericValue(s.charAt(0));
++charCounts[charCode];
}
}
//程序启动时
int[]字符数=新的int[1024];
对于(int i=0;i 对于(int i=0;i既然您说过允许使用ArrayList和String,那么您可以非常简单地创建一个String
类型的ArrayList
,让用户将国家添加到ArrayList,然后创建一个循环来遍历ArrayList,并计算指定的字符在开始时出现的次数每一个字
创建ArrayList:
ArrayList<String> countries = new ArrayList<>();
然后编写一个方法进行计数。您可以调用该方法String.charAt()
,查看它是否与您要查找的字符匹配:
private int countStartingCharacters(ArrayList<String> countries, char match){
int counter = 0;
for (int i = 0; i < countries.size(); i++){
if (countries.get(i).charAt(0) == match) {
counter++;
}
}
return counter;
}
private int countStartingCharacters(数组列表国家/地区,字符匹配){
int计数器=0;
对于(int i=0;i
为了安全起见,我将count方法中的所有内容都转换为小写,并添加输入验证,但仅此而已。希望它能有所帮助。您可以使用下面的代码获取以特定字符开头的国家的计数-
ArrayList<String> myList = new ArrayList<String>();
while(!myQueue.isEmpty()) {
myList.add((String)myQueue.dequeue());
}
TreeMap<Character, Integer> counts = new TreeMap<Character, Integer>();
for(int i = 0; i < myList.size(); i++) {
String country = myList.get(i);
Character first = Character.toUpperCase(country.charAt(0));
if(counts.get(first) == null) {
counts.put(first, 0);
}
counts.put(first, counts.get(first) + 1);
}
//Now print the counts
TreeSet<Character> keySet = new TreeSet<Character>(counts.keySet());
Iterator<Character> iterator = keySet.iterator();
while(iterator.hasNext()) {
Character key = iterator.next();
System.out.println("Total number of countries start with " + key + " : " + counts.get(key));
}
ArrayList myList=new ArrayList();
而(!myQueue.isEmpty()){
添加((字符串)myQueue.dequeue());
}
树映射计数=新树映射();
对于(int i=0;i
编辑:带有样本的样本代码队列类
import java.util.*;
public class Test {
public static void main (String[] args) {
Queue myQueue = new Queue(10);
ArrayList<String> myList = new ArrayList<String>();
while(!myQueue.isEmpty()) {
myList.add((String)myQueue.dequeue());
}
TreeMap<Character, Integer> counts = new TreeMap<Character, Integer>();
for(int i = 0; i < myList.size(); i++) {
String country = myList.get(i);
Character first = Character.toUpperCase(country.charAt(0));
if(counts.get(first) == null) {
counts.put(first, 0);
}
counts.put(first, counts.get(first) + 1);
}
//Now print the counts
TreeSet<Character> keySet = new TreeSet<Character>(counts.keySet());
Iterator<Character> iterator = keySet.iterator();
while(iterator.hasNext()) {
Character key = iterator.next();
System.out.println("Total number of countries start with " + key + " : " + counts.get(key));
}
}
}
class Queue {
String[] items;
int pointer = 10;
Queue(int size) {
items = new String[10];
items[0]="Austria";
items[1]= "United States";
items[2]="Nepal";
items[3]="Bhutan";
items[4]="China";
items[5]="Brazil";
items[6]="Africa";
items[7]="Sri Lanka";
items[8]="Italy";
items[9]="India";
}
Object dequeue() {
pointer--;
return items[pointer];
}
boolean isEmpty() {
return pointer == 0;
}
}
import java.util.*;
公开课考试{
公共静态void main(字符串[]args){
队列myQueue=新队列(10);
ArrayList myList=新的ArrayList();
而(!myQueue.isEmpty()){
添加((字符串)myQueue.dequeue());
}
树映射计数=新树映射();
对于(int i=0;i
您可以在队列类中实现一个方法,该方法在给定字母的情况下,返回队列中以该字母开头的名称数:
public int countriesWith(char c){
int counter = 0;
for(int i = 0; i < items.length; i++){
if(items[i].startsWith(String.valueOf(c))){
counter++;
}
}
return counter;
}
public int countriesWith(字符c){
int计数器=0;
对于(int i=0;i
您可以用简单的方法解决此问题。请尝试以下方法:
public static void main(String[] args) {
List<String> listNames = new ArrayList<>();
listNames.add("Austria");
listNames.add("Russia");
listNames.add("Brasil");
listNames.add("Argentina");
listNames.add("Ukraine");
listNames.add("Belarus");
listNames.add("Litvia");
listNames.add("Livia");
listNames.add("Italia");
Map<String, Integer> nameCount = new HashMap<>();
for (int i = 0; i < listNames.size(); i++) {
int count = 0;
for (int j = 0; j < listNames.size(); j++) {
if (listNames.get(i).substring(0, 1).equals(listNames.get(j).substring(0, 1))) {
++count;
}
}
nameCount.put(listNames.get(i).substring(0, 1), count);
}
// output
for (Map.Entry<String, Integer> set : nameCount.entrySet()) {
System.out.println(set.getKey() + " : " + set.getValue());
}
}
publicstaticvoidmain(字符串[]args){
List listNames=new ArrayList();
添加(“奥地利”);
列表名称。添加(“俄罗斯”);
添加(“巴西”);
列表名称。添加(“阿根廷”);
列表名称。添加(“乌克兰”);
列表名称。添加(“白俄罗斯”);
列表名称。添加(“Litvia”);
列表名称。添加(“Livia”);
列表名称。添加(“意大利”);
映射名称计数=新的HashMap();
对于(int i=0;i public static void main(String[] args) {
List<String> listNames = new ArrayList<>();
listNames.add("Austria");
listNames.add("Russia");
listNames.add("Brasil");
listNames.add("Argentina");
listNames.add("Ukraine");
listNames.add("Belarus");
listNames.add("Litvia");
listNames.add("Livia");
listNames.add("Italia");
Map<String, Integer> nameCount = new HashMap<>();
for (int i = 0; i < listNames.size(); i++) {
int count = 0;
for (int j = 0; j < listNames.size(); j++) {
if (listNames.get(i).substring(0, 1).equals(listNames.get(j).substring(0, 1))) {
++count;
}
}
nameCount.put(listNames.get(i).substring(0, 1), count);
}
// output
for (Map.Entry<String, Integer> set : nameCount.entrySet()) {
System.out.println(set.getKey() + " : " + set.getValue());
}
}