我是一名学习Java的学生,这是我的程序的一部分,它应该得到一个字符串的长度,但字符串都在一个数组中。我尝试在eclipse中运行它,它说我得到一个错误,它说length = name[x].length()
有人可以让我知道是否有办法解决这个问题
public class GuessName
{
Random random = new Random();
Scanner scan = new Scanner(System.in);
String[] name = new String[10];
int x,length;
char guess1,guess2,guess3;
public void names()
{
name[0] = "MARK";
name[1] = "CHARLIE";
name[2] = "MEG";
name[3] = "KYLE";
name[4] = "JUSTIN";
name[5] = "KATARINA";
name[6] = "JOEL";
name[7] = "KEVIN";
name[8] = "MICHAEL";
name[9] = "JENNA";
name[10] = "GREG";
}
public void start()
{
x = random.nextInt(10);
length = name[x].length();
}
答案 0 :(得分:1)
你有一个数组,如下所示:
String[] name = new String[10];
[]
之间的数字表示数组的大小。在您的示例中,您的数组大小为10,这意味着您的数组有10个索引[0,9]
(因为索引从0开始)。 names()
方法的最后一行是:
name[10] = "GREG";
你知道我在哪里吗?
此外,您的main
方法是什么样的?如果您收到NullPointerException
,则可能表示您在start()
之前致电names()
。
答案 1 :(得分:0)
我评论了有问题的部分。此外,您尝试初始化11个名称而不是10个。请注意,数组索引从0开始。我不知道为什么你有扫描仪对象,但你可以使用这个块来完成你的代码。
import java.util.Random;
import java.util.Scanner;
public class GuessName {
// Scanner scan = new Scanner(System.in);
String[] name = new String[10];
int x,length;
char guess1,guess2,guess3;
public GuessName()
{
name[0] = "MARK";
name[1] = "CHARLIE";
name[2] = "MEG";
name[3] = "KYLE";
name[4] = "JUSTIN";
name[5] = "KATARINA";
name[6] = "JOEL";
name[7] = "KEVIN";
name[8] = "MICHAEL";
name[9] = "JENNA";
// name[10] = "GREG";
}
public void start()
{
Random random = new Random();
this.x = random.nextInt(10);
this.length = name[this.x].length();
}
public static void main(String[] args) {
GuessName gn = new GuessName();
gn.start();
System.out.println("The name is: "+gn.name[gn.x]+" and the length is: "+ gn.x);
} }