【问题标题】:How to find the word with the most uppercase letters in an ArrayList如何在ArrayList中找到大写字母最多的单词
【发布时间】:2015-02-15 01:07:35
【问题描述】:

我必须在数组列表中输入城市,然后分析输入的城市,以找到大写字母最多的城市。但是我无法找出代码来对数组列表中的输入进行任何分析并找到具有最多大写字母的单词。

package cirties2;
import java.util.Scanner;
import java.util.*;  

public class Cirties2 {

public static void main(String[] args) 
{
  Scanner city = new Scanner(System.in);  
  System.out.println("Enter the cities<enter stop to exit>");  
  List<String> cities = new ArrayList<String>( );  
  boolean thing = true;  
 while(thing)  
    {  
      String s = city.nextLine( );  

        if(s.equalsIgnoreCase("stop"))  
        {  
          System.out.println(cities);
          break;      
        }  
        else  
        {  
          System.out.println("Enter the cities<enter stop to exit>");  
          cities.add(s);  
        }  
    }  

}
}

【问题讨论】:

  • 您可能对您的大脑造成了伤害,但不允许它先尝试自己编写代码,您可能会因为不认为它有能力这样做而侮辱它。我敢打赌它是。我说,先试一试,看看你想出了什么——你可能会感到惊喜。即使您没有成功,您也可以回到这里提出更具体和改进的问题,这可能会为您提供更好和更具体的答案。
  • 检查列表中的每个项目,计算大写字母,跟踪您获得的最高计数。一步一步搞清楚。
  • 要为您指明正确的方向,请查看toCharArray()Character.isUpperCase(your char)。希望你能弄清楚。 :)
  • 附言:字符只是表示 UnicodeTable 中位置(或代码点)的数字,因此您可以像 yourCharacter&lt;'Z' 一样比较它们。
  • 另外你可以看看java 8的新特性:list.sort((String a, String b) -&gt; b.chars().filter((int i)-&gt;Character.isUpperCase(i)).reduce(0,(int x, int y)-&gt; y+1)-a.chars().filter((int i)-&gt;Character.isUpperCase(i)).reduce(0,(int x, int y)-&gt; y+1))

标签: java string arraylist


【解决方案1】:

假设您的字符串仅包含字母,则大写字母 ASCII 值小于它们的小写替代值。因此,如果您使用 String.hashCode(),则具有更多大写字母的字符串将具有所有字符串中最小的哈希码。

扫描你的列表,在每次迭代中获取每个字符串的哈希码,如果它小于之前的值,则更新最小值。

希望这会有所帮助:)

【讨论】:

  • 没有人说解决方案应该仅限于 ASCII 字符。有数千个大写字符的代码点值大于“z”。
【解决方案2】:

这太容易了,不过我会给你一些提示。

遍历数组列表use the first way

要检查字母是否为大写,请参阅this

你只关心大写字母最多的单词,所以只要你发现一个单词的大写字母多于一个单词,就不断更新一个变量(我们称之为track),其中包含大写字母数量最多的单词的索引轨道指向。

你不应该在这里问这么简单的问题,至少在没有先尝试一些东西并向我们展示你到目前为止所做的事情之前是这样。你会得到很多反对票。我现在是一个相当优秀的程序员,但我是根据经验说话,站在光顾的一边感觉很好哈哈。

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 2022-11-23
    相关资源
    最近更新 更多