我正在做一个赋值,我被这个错误困住了:无法为最终变量计数赋值
到目前为止,这是我的代码...
public class List
{
private final int Max = 25;
private final int count;
private Person list[];
public List()
{
count = 0;
list = new Person[Max];
}
public void addSomeone(Person p)
{
if (count < Max){
count++; // THIS IS WHERE THE ERROR OCCURS
list[count-1] = p;
}
}
public String toString()
{
String report = "";
for (int x=0; x < count; x++)
report += list[x].toString() + "\n";
return report;
}
}
我对java非常陌生,显然不是电脑高手,所以请尽可能用最简单的术语解释问题/解决方案。非常感谢。
这是抛出错误,因为你已经声明了计数作为最终变量。最终变量只不过是常量。一旦最终变量初始化,我们就不能更改它的值。
当你声明一个变量final
时,你基本上告诉编译器这个变量是常量,不会改变。您声明了count
final,但尚未初始化(设置值)。这就是为什么您可以在构造函数中设置它的值。public List(){}
:最终变量可以初始化一次,之后就不能修改了。
但也有例外,例如,如果您创建了一个int值为count的对象,并添加了一个setter,那么您仍然可以修改最终的对象。
这方面的例子:
public class ExampleObject {
private int count;
public ExampleObject(int count) {
this.count = count;
}
public void setCount(int count) {
this.count = count;
}
public int getCount() {
return count;
}
}
public class ExampleDemo {
private static final ExampleObject obj = new ExampleObject(25);
public static void main(String[] args) {
obj = new ExampleObject(100); //not allowed: cannot assign a value to final variable
obj.setCount(100); //allowed
}
}
计数
将抛出一个错误。根据神谕,
最终变量只能被分配一次。声明变量最终可以作为有用的留档,其值不会改变,并有助于避免编程错误。
你可以在这里看那篇文章。看看你的代码,似乎你真的不想把
count
作为最终结果。您希望能够在整个程序中更改其值。修复方法是删除final
修饰符。
问题内容: 我正在使用netbeans 7.1.1。这是我的代码,在这里我已将“ c”声明为“ final int”,但行“ c = Integer.parseInt(f.getText());” 我收到一个错误“无法为最终变量赋值”。如果我从声明中删除final一词,并使之与“ int c”相同,则在同一行中会出现错误“无法从类内访问局部变量c;需要声明为final”。谁能告诉我为什么会这样
因为我相信这是一个很好的编程实践,所以如果我的所有(局部或实例)变量只需要编写一次,我就将它们设为< code>final。 但是,我注意到当变量赋值可以抛出异常时,您不能将所述变量设为最终变量: 有没有办法在不诉诸临时变量的情况下做到这一点?(或者这不是最终修饰符的正确位置?)
Java规范说:变量可以声明为final。最后一个变量只能分配一次。声明变量>final可以作为有用的文档,说明其值不会改变,并有助于避免编程>错误。 如果最后一个变量被赋值,除非它在赋值之前明确地没有赋值(§16)>,否则这是一个编译时错误。 空白final是其声明缺少初始值设定项的final变量。 null 如果你觉得这是一个愚蠢的问题,我很抱歉,但我要求你指出一个来源,我可以得到答案。 谢谢
问题内容: 我有一个座位数组,该数组有两个字符串(已选择和为空)。单击鼠标后,我想遍历数组并找到选定的座位。当我按下按钮时,它说: 无法分配最终的局部变量seatno,因为它是用封闭类型定义的。 问题答案: 关键是封闭类型中的方法局部变量实际上已 复制 到匿名类的实例中(这是由于激活框架的问题,但我将不做进一步的详细介绍,因为这与问题无关)。这就是为什么它们需要是final的原因,因为嵌套类型实例
我正在将一个变量赋给一个数组,它是我在刀片文件中声明的。它返回一个错误 下面是我的代码: 我无法理解这个错误。谢谢!