如何解决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 举报,一经查实,本站将立刻删除。