变量无法解决

Dev*_*vel 1 java android

我正在尝试为每个i和j变量创建一个项目列表.我的代码是:

if (i == 0) { 
            if (j == 0) { 
                final CharSequence[] items = {"4:45", "5:00"}
            } else if (j == 1) { 
                final CharSequence[] items = {"4:43", "4:58"}
            } else if (j == 2) { 
                final CharSequence[] items = {"4:41", "4:56"}
            } else { 
                final CharSequence[] items = {"4:38", "4:53"}
}
Run Code Online (Sandbox Code Playgroud)

...

new AlertDialog.Builder(this)
               .setTitle("Hours")
               .setItems(items,
                new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialoginterface, int i) {
                      // getStation(i);
                   }
                })
               .show();
       }
Run Code Online (Sandbox Code Playgroud)

我在行中收到错误.setItems(items,:

items cannot be resolved
Run Code Online (Sandbox Code Playgroud)

我认为编译器认为CharSequence[] items可能没有初始化或者什么......我怎样才能使这个程序运行?

Joa*_*uer 6

实际上items,代码中有4个变量,每个变量的范围非常有限(只有相应的代码块if).

相反,您需要创建一个具有更大范围的变量:

if (i == 0) { 
            final CharSequence[] items;
            if (j == 0) { 
                items = new CharSequence[] {"4:45", "5:00"};
            } else if (j == 1) { 
                items = new CharSequence[] {"4:43", "4:58"};
            } else if (j == 2) { 
                items = new CharSequence[] {"4:41", "4:56"};
            } else { 
                items = new CharSequence[] {"4:38", "4:53"};
            }
            // you can use items here
}
Run Code Online (Sandbox Code Playgroud)

编辑:我忘了new CharSequence[]这里有必要.如果在声明期间初始化变量,则可以将其保留,但在此处您将声明移出并使用简单赋值来设置值.由于某种原因,定义数组的短语法在initializaton语句中有效(即在与声明在同一语句中的赋值中).