Java非常新,我在大学的一个介绍课和做项目。我正在尝试创建一个方法,在String数组中搜索输入的状态并返回索引。如果用户输入的查询不在数组中,我希望它要求搜索新的状态。 我的例外是“变量statePosition可能尚未初始化”。 以下是代码。
提前谢谢!
static final int NUM_STATES = 50;
public static int askState(String[] stateNames) {
Scanner keyboard = new Scanner(System.in);
String state;
int statePosition;
System.out.println("Please enter a state that you would like to search:");
state = keyboard.next();
{
for (int i = 0; i < NUM_STATES; i++) {
if (state.equals(stateNames[i])) {
statePosition = i;
} else {
System.out.println("Please enter a valid state:");
}
state = keyboard.next();
}
return statePosition;
}
答案 0 :(得分:1)
你能用吗
int statePosition = -1;
如果找不到,那将返回-1。该错误表示您没有为statePosition指定值。
答案 1 :(得分:0)
我认为您需要像这样初始化变量int statePosition;
:
int statePosition =-1;
同样初始化您的String state;
:
String state = null;
答案 2 :(得分:0)
与异常状态一样,您必须初始化int statePosition:
int statePosition = null;
或
int statePosition = 0;
......你知道我的意思吗?
答案 3 :(得分:0)
您需要初始化两个变量
String state= null;
int statePosition=-1;
答案 4 :(得分:0)
这里的问题是你永远不会实例化statePosition变量,但你总是返回它。
尝试给statePosition一个值(就像其他人说的那样-1)。
如果找到了statePosition,也可以尝试使用while(而不是for语句)执行此操作。
答案 5 :(得分:0)
您的程序在代码中进一步使用之前,很容易在其中一个变量中遇到错误。 我建议你每次编码时都应该把变量放到初始状态而不是留下空值。
String state= null;
int statePosition=-1;
将其放入代码中以解决问题。
答案 6 :(得分:0)
您可能希望从使用 int 更改为整数。整数是一个对象,因此它可以为null。这样,您可以在执行任何进一步操作之前检查是否已设置。
static final int NUM_STATES = 50;
public static Integer askState(String[] stateNames) {
Scanner keyboard = new Scanner(System.in);
String state;
Integer statePosition;
System.out.println("Please enter a state that you would like to search:");
state = keyboard.next();
for (int i = 0; i < NUM_STATES; i++) {
if (state.equals(stateNames[i])) {
statePosition = i;
} else {
System.out.println("Please enter a valid state:");
}
state = keyboard.next();
}
if (statePosition == null) {
throw new Exception("State Position Not Set :(");
}
return statePosition;
}