我遇到了字符串数组的问题,程序将使用它的名称放在屏幕上。我做了一些编码和创建2D游戏和Android应用程序,但事实上我从来没有使用数组来保存分数或东西现在我卡住了,需要学习它和下面的代码想到它,因为我们正在为拼贴学生把学位放到数组出错的错误,我无法弄清楚为什么下面的完整代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
Chatlength = new String[10];
for(i =0; i <= Chatlength.length ; i++){
Scanner s = new Scanner(System.in);
String ss = s.nextLine();
Chatlength[i] = ss;
}
while(true){
if(i > Chatlength.length){
int ints = 0;
while(ints <10){
System.out.println("Name "+ints+": "+Chatlength[ints]);
ints++;
}
}
}
它给了我Chatlength[i] = ss;
的错误。
答案 0 :(得分:1)
由于你的循环界限,我猜你得到ArrayIndexOutOfBoundsException
:
for(i =0; i <= Chatlength.length ; i++){
应该是:
for (int i = 0; i < Chatlength.length; i++) {
...使用局部变量声明而不是静态变量,我假设你已经在代码中声明了你没有向我们展示过。
长度为10的数组的有效索引为0到9(含)。当您尝试迭代集合时,实际上需要<=
来获取循环索引变量,这是非常非常罕见的。 (Java中的所有标准集合都是基于0的,因此您几乎总是希望拥有一个独占的上限。)
此外,我强烈建议您开始遵循Java命名约定。
答案 1 :(得分:0)
条件是罪魁祸首。你要加一个大小的数组。
i <= Chatlength.length
将其更改为
i < Chatlength.length
答案 2 :(得分:0)
检查for
- 循环:
for(i =0; i <= Chatlength.length ; i++)
应该是
for(i =0; i < Chatlength.length ; i++)
答案 3 :(得分:0)
你没有先声明数组:
Chatlength = new String[10]; //Wrong code;
将其更改为:
String[] Chatlength = new String[10];
然后java基于零,你应该使用它:
for(i =0; i < Chatlength.length ; i++)
答案 4 :(得分:0)
对于你创建的数组,没有这样的索引i = 10,根据你在循环中的条件,它允许i = 10(i <= Chatlength.length),这不是一个有效的数组位置,因此你得到了异常< / p>