我想在数组中输入3个名字。然后我想访问第二个名字中第二个字符的位置。
首先,我在第13行得到了一个超出界限的例外。此外,我知道的第二个for循环完全没有这样的借口。
为什么我得到异常以及如何访问某些字符串中的某些字符位置?
class Names
{
public static void main(String[]args)
{
int index;
String names[];
names = new String [3];
for(index = 1; index <= names.length; index++)
{
System.out.println("Enter name " + index);
names[index] = EasyIn.getString();
}
for(index = 0; index < names.length; index++)
{
System.out.println(names[1][2]);
}
}
}
答案 0 :(得分:1)
您可以创建静态数组,而不是从中读取值
String[] array = {"Peter", "John", "Andre"}; //now you have three items in array
char secondChar = array[1].charAt(1); //first get second element, than get second char from it
所以现在secondChar
是o
- 还记得数组从0
开始,这就是为什么索引1
意味着数组中的第二项 - 同样适用对于charAt
,String基本上是字符数组。
答案 1 :(得分:1)
您的代码应如下所示:
int index;
String names[];
names = new String [3];
for(index = 0; index < names.length; index++)
{
System.out.println("Enter name " + index);
names[index] = EasyIn.getString();
}
for(index = 0; index < names.length; index++)
{
if (names[index] != null && names[index].length() > 2)
System.out.println(names[index].charAt(2));
}
答案 2 :(得分:1)
有几件事。
您可以像array
一样制作String
String[] names = new String[3]
个for(index = 1; index <= names.length; index++)
个对象。
在你的第一个循环中你就是这样开始的:
0
这是错误的,你从index <= names.length;
的索引开始,除非你想跳过第一个元素。然后你定义array
,这也是错误的。长度返回实际长度,但我们现在知道for(index = 0; index < names.length; index++)
从0开始。您应该像这样定义:
System.out.println(names[<an index>].charAt(2));
正如其他人之前所说过的,如果你想从字符串中获取某个字符,你可以使用`myString.charAt()',所以在你的情况下你应该这样写:
{{1}}
答案 3 :(得分:1)
试试这个:
在你的第一个循环中:
for(index = 0; index < names.length; index++)
删除你的第二个循环,因为没有wana显示每个元素,你可以直接这样做:
System.out.println(names[1].charAt(1));
答案 4 :(得分:0)
如果要访问字符串中的某个字符,请使用mystring.charAt(index)