对于java中具有嵌套if循环的循环

对于java中具有嵌套if循环的循环,java,if-statement,for-loop,nested,Java,If Statement,For Loop,Nested,对Java非常陌生,我在大学里的一个介绍班上做一个项目。我试图创建一个方法,在字符串数组中搜索输入状态并返回索引。如果用户输入的查询不在数组中,我希望它请求一个新的状态进行搜索。 我的例外是“变量statePosition可能尚未初始化” 下面是代码 提前谢谢你 static final int NUM_STATES = 50; public static int askState(String[] stateNames) { Scanner keyboard = new Scanne

对Java非常陌生,我在大学里的一个介绍班上做一个项目。我试图创建一个方法,在字符串数组中搜索输入状态并返回索引。如果用户输入的查询不在数组中,我希望它请求一个新的状态进行搜索。 我的例外是“变量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;
    }
static final int NUM_STATES=50;
公共静态int askState(字符串[]stateNames){
扫描仪键盘=新扫描仪(System.in);
字符串状态;
国际地位;
System.out.println(“请输入要搜索的状态:”;
状态=键盘。下一步();
{
对于(int i=0;i
您可以使用

 int statePosition = -1;
如果找不到,则返回-1。错误意味着您没有为statePosition赋值。

您可以使用

 int statePosition = -1;

如果找不到,则返回-1。该错误意味着您没有为statePosition赋值。

我认为您需要初始化变量
int statePosition;
如下所示:

int statePosition =-1;
String state = null;
还要初始化
字符串状态;
,如下所示:

int statePosition =-1;
String state = null;

我认为您需要像这样初始化变量
int statePosition;

int statePosition =-1;
String state = null;
还要初始化
字符串状态;
,如下所示:

int statePosition =-1;
String state = null;

与异常状态一样,您必须初始化int statePosition:

int statePosition = null;


…您知道我的意思吗?

与异常状态一样,您必须初始化int statePosition:

int statePosition = null;


…你知道我的意思吗?

你需要初始化这两个变量

String state= null;
int statePosition=-1;

您需要初始化这两个变量

String state= null;
int statePosition=-1;

这里的问题是,您从未实例化statePosition变量,但总是返回它

尝试给statePosition一个值(就像其他人说的-1)


还可以尝试使用while(而不是for语句)来执行此操作,如果找到statePosition,该语句将中断。

这里的问题是,您从未实例化statePosition变量,但总是返回它

尝试给statePosition一个值(就像其他人说的-1)


如果找到statePosition,也可以尝试使用while(而不是for语句)来执行此操作。

在代码中进一步使用某个it变量之前,程序很容易在其中一个变量中遇到错误。 我建议每次编写代码时,都应该将变量置于初始状态,而不是将其保留为空值

String state= null;
int statePosition=-1;

将其放入代码中以解决您的问题。

在代码中进一步使用某个it变量之前,您的程序很容易在其中一个变量中遇到错误。 我建议每次编写代码时,都应该将变量置于初始状态,而不是将其保留为空值

String state= null;
int statePosition=-1;

将其放入代码中以解决您的问题。

您可能希望从使用int更改为Integer。Integer是一个对象,因此可以为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;
}
static final int NUM_STATES=50;
公共静态整数askState(字符串[]stateNames){
扫描仪键盘=新扫描仪(System.in);
字符串状态;
整数状态位置;
System.out.println(“请输入要搜索的状态:”;
状态=键盘。下一步();
对于(int i=0;i
您可能希望从使用int更改为Integer。Integer是一个对象,因此可以为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;
}
static final int NUM_STATES=50;
公共静态整数askState(字符串[]stateNames){
扫描仪键盘=新扫描仪(System.in);
字符串状态;
整数状态位置;
System.out.println(“请输入要搜索的状态:”;
状态=键盘。下一步();
对于(int i=0;i
initalize变量statePosition.0可以正常工作。String state=null;int statePosition=-1;也许是时候接受答案了……initalize变量statePosition.0可以正常工作。String state=null;int statePosition=-1;也许是时候接受答案了……@user3052882:-不客气!如果这对你有帮助,一定要接受这个答案!@user3052882:-不客气!如果这对你有帮助,一定要接受这个答案!