2013-05-09 35 views
8

我是java新手,仍在学习,所以请牢记这一点。我试图编写一个程序,用户可以在其中输入关键字,并将其转换为数字并将其放入数组中。我的问题是数组需要不断重复int的。重复Java数组

我的代码是:

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

现在,如果我试图让任何key[i]比它抛出一个outofbounds错误keyword.length更高。我需要它是无限的。

所以基本上,如果keyword.length()是3我需要能够看到key[2]是否与key[5]key[8]等相同。

感谢您的帮助!

+0

not ++ k,但是k + = keyword.length(); – Hydroid 2013-05-09 18:02:09

+0

是否有意为之,将某些元素保留为0? – hyde 2013-05-09 18:11:49

回答

4

嗯,最简单的做法是先修改一些代码。提取的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'; 
    } 
} 

这是假设你实际上使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'; 
    } 
}