for循环,在java中嵌套if循环

时间:2013-11-30 19:16:24

标签: java if-statement for-loop nested

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

7 个答案:

答案 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;
}