我是java的新手,还在学习,所以记住这一点.我正在尝试编写一个程序,用户可以在其中输入关键字,然后将其转换为数字并将其放入数组中.我的问题是数组需要不断重复int.
我的代码是:
String keyword=inputdata.nextLine();
int[] key = new int[keyword.length()];
for (int k = 0; k < keyword.length(); ++k)
{
if (keyword.charAt(k) >= 'a' && keyword.charAt(k) <= 'z')
{
key[k]= (int)keyword.charAt(k) - (int)'a';
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我试图得到任何key[i]高于keyword.length它会抛出outofbounds错误.我需要它才能成为infinte.
所以基本上,如果keyword.length()是3,我需要能够看到,如果key[2]是一样的key[5],并key[8]等.
谢谢你的帮助!
嗯,最简单的方法是先进行一些重构来修复代码。将 的所有使用提取keyword.charAt(k)到局部变量:
for (int k = 0; k < keyword.length(); ++k)
{
char c = keyword.charAt(k);
if (c >= 'a' && c <= 'z')
{
key[k] = c'a';
}
}
Run Code Online (Sandbox Code Playgroud)
然后我们可以通过操作员解决这个问题%:
// I assume you actually want a different upper bound?
for (int k = 0; k < keyword.length(); ++k)
{
char c = keyword.charAt(k % keyword.length());
if (c >= 'a' && c <= 'z')
{
key[k] = c - 'a';
}
}
Run Code Online (Sandbox Code Playgroud)
假设您实际上的时间key长于keyword- 并且您可能也想更改循环的上限。例如:
int[] key = new int[1000]; // Or whatever
for (int k = 0; k < key.length; ++k)
{
char c = keyword.charAt(k % keyword.length());
if (c >= 'a' && c <= 'z')
{
key[k] = c - 'a';
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |