微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java:如何绕过 Visual Studio 字符串长度限制的字符串长度限制?

如何解决Java:如何绕过 Visual Studio 字符串长度限制的字符串长度限制?

我正在尝试创建一个简单的程序,用于计算单个字符串中每个字母 A-Z 实例的数量。 示例:
输入:“abc dca”
输出
有/是 2 个字母 a
有/是 1 个字母 b
有/是 2 个字母 c
有/是 1 个字母 d

class ilikyo
{
public static boolean checkifvalid(String wrds)
{     int stopper  = 0;
    boolean checked = true;
    for(int i = 0; i < wrds.length(); i++)
          {
          if((int)wrds.charat(i) != 32 && (int)wrds.charat(i) < 65)
          {
          System.out.println("error!   " + wrds.charat(i) + "   is not a valid input");
            stopper++;
            checked = false;
          }
        
          }
            if(stopper == 0)
                   {
                   System.out.println("Input is valid!");
                   }
return checked;
}
public static String converttoLower(String wrdy)
{     
String copy = "";
for(int i= 0; i < wrdy.length(); i++)
{
    if((int)wrdy.charat(i) >= 97 || (int)wrdy.charat(i) == 32)
             {
             copy = copy + wrdy.charat(i);
             }
        else
             {
              int Upper = (int)wrdy.charat(i) +32;
                copy = copy + (char)Upper;
             }
}
return copy;
}
public static void sortthealph(String wrd)
          {
          int check  = 0;
          int stopper = 0;
          int spaces = 0;
          wrd = converttoLower(wrd);
          String copy = "";
          for(int i = 97; i <= 122; i++)
                   {
                   int counthowmany = 0;
                  for(int j = 0; j < wrd.length(); j++)
                        {
                        
                               if((int)wrd.charat(j) == i)
                               {
                                     counthowmany++;
                                     check = counthowmany;
                               }
                               if((int)wrd.charat(j) == 32 && stopper == 0)
                               {
                               spaces++;
                            
                               }
                               
                               
                        }
                      if(counthowmany > 0)
                               {
                               System.out.println("there are/is  " + counthowmany + " instance(s) of the letter " + (char)i);
                               }
                        stopper = 1;
                   }
                   System.out.println(copy);
                   System.out.println(" + " + spaces + " spaces");
         
          }
        
public static void main(String[] args)
{

long starttime = System.nanoTime();
String testing = "abc dca";
sortthealph(testing);
long endtime =System.nanoTime();
long totaltime = endtime - starttime;
System.out.println((double)totaltime/1000000000 + "  seconds elapsed");

}


} 

对于像示例中所示的短字符串,这完全可以正常工作,但是当我尝试使用更长的字符串时,我运气不佳
jgrasp 编译器上,我收到一个类似如下的错误

jgraspcoding.java:80: error: constant string too long

在 VS Code 上,字符串超出了边界,因此并不适合屏幕。
所以这基本上就是我的困境,我希望用更大的字符串运行这段代码

解决方法

哈希图将是更简单的方法。通过将字符串转换为字符数组并进行计数。

char[] chars = str.toCharArray();
Map <char,Integer> hash = new HashMap<char,Integer>();


for(char ch: chars) {
    Integer cnt = hash.get(ch);
    hash.put(ch,(cnt == null) ? 1 : cnt +1);
}

for (Map.Entry<char,Integer> entry : hash.entrySet()) {
    System.out.println("there are/is " + entry.getValue() + "  instance(s) of the letter " entry.getKey());
} 

WARN: uncompiled code

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。