java - 重复 Java 数组

标签 java arrays loops

我是 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';
    }
}

现在,如果我尝试获取任何高于 keyword.lengthkey[i],它会抛出 outofbounds 错误。我需要它是无限的。

所以基本上,如果 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';
    }
}

然后我们可以用 % 运算符解决这个问题:

// 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';
    }
}

假设您实际上使 keykeyword 长 - 您可能还想更改循环的上限。例如:

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';
    }
}

关于java - 重复 Java 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16468086/

相关文章:

java - 将二进制文件复制到 jar 之外

javascript - 向页面添加大量元素时性能不佳

c# - 无法在锯齿状数组中声明对象

bash - 获取提示中的多个值并存储在数组中

php - ReactPHP 在循环内阻塞

java - 需要有关 Filenet Enterprise 记录的帮助

java - HTML Markdown源代码的词法分析器(java)

java - 在常量表达式中使用 String.join

c++ - 如何遍历二维数组?

java - do-while 循环内的扫描输入在下一次迭代时未正确重置