首页 / JAVA / java – 无法解析变量
java – 无法解析变量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 无法解析变量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1713字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试为每个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"}
}
…
new AlertDialog.Builder(this)
.setTitle("Hours")
.setItems(items,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface, int i) {
// getStation(i);
}
})
.show();
}
我在行.setItems中遇到错误(items,:
items cannot be resolved
我认为编译器认为CharSequence []项可能没有初始化或者某些东西……
我怎样才能运行这个程序?
解决方法:
问题是变量范围.
if (someCondition) {
final int i = 666;
} else {
final int i = 42;
}
int j = i + 1; // compile-time error
这里我们有两个局部变量,它们在声明和初始化后立即超出范围.如果j需要i的值,那么我必须在更大的范围内声明.
final int i;
if (someCondition) {
i = 666;
} else {
i = 42;
}
int j = i + 1; // compiles fine!
(应该提到的是,这正是三元运算符擅长的场景,即)
final int i = (someCondition) ? 666 : 42;
在您的特定情况下,遗憾的是数组初始化程序简写只能用于初始化声明.那是:
int[] arr1 = { 1, 2, 3 }; // compiles fine!
int[] arr2;
arr2 = { 4, 5, 6 }; // doesn't compile!
您可以在if之外提取项目的声明并为每个案例编写详细代码(请参阅Joachim Sauer的答案),但更简洁的代码是使用数组数组.
final CharSequence[][] allItems = {
{ "4:45", "5:00" },
{ "4:43", "4:58" },
{ "4:41", "4:56" },
{ "4:38", "4:53" }
};
final CharSequence[] items = allItems[j];
在这种情况下,此技术很有效,但在更一般的情况下,您希望使用Map或类似的东西.
注意:它在原始代码中并不明确,但如果j可以是0,1,2或3,则此方法有效.如果您希望在j为除0,1,2之外的任何值时应用最后一个选项,那么您必须检查并在此代码之前将其设置为3.
内容总结
以上是互联网集市为您收集整理的java – 无法解析变量全部内容,希望文章能够帮你解决java – 无法解析变量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。