在java中如何在方法中使用类变量?
这是我的代码
public class ExamQ3a {
String[] descriptionArr = new String[50];
static int[] codeArr = new int[50];
public static void displayItems(int count, int[] codeArr,
String[] descriptionArr) {
count = this.codeArr.length;
for (int i = codeArr.length; i < codeArr.length; i--) {
}
}
}
这里突出显示的行是count = this.codeArr.length;我得到的错误是无法从静态上下文引用非静态变量。但我已经将变量设为静态。那是什么给出了什么?
所以只按要求!不是我想问整个问题,只是为了知道我为什么要使用静态,这是一个练习题
您将开发一个简单的应用程序系统来管理库存 在一家公司。系统应该能够保持最多50个列表 项目。每个项目都有唯一的整数代码和描述。
(a)编写声明并创建两个数组来存储的Java语句 代码和项目的描述。
(b)使用以下方法签名编写Java方法:
public static void displayItems(int count,int [] codeArr,String [] descriptionArr)
此方法显示公司中所有项目的代码和说明 以表格形式,带有适当的列标题。
参数:codeArr:存储项目代码的数组
descriptionArr:存储项目描述的数组
count:系统中的项目数
答案 0 :(得分:5)
静态世界中没有this
。摆脱它。要解释一下,this
指的是当前的实例,当您处理静态方法或变量时,您正在处理与该类关联的项,而不是任何一个特定实例。所以将代码更改为:
count = codeArr.length;
编辑1
顺便说一句,你不想把像} } }
那样的结束括号拼凑起来,这使你的代码很难阅读和遵循。白色空间是免费的,因此不妨明智地使用它来提高代码的可读性。
编辑2
你说:
那么如何将数组codeArr引用到类变量codeArr?
你在这个类中,并且不需要在这里使用类变量名,因为假定它被使用。只需使用静态变量或方法名称,你应该是金色的。
编辑3
对这种类型的变量使用静态会给代码带来难闻的气味。我认为如果这是一个实例变量而不是静态变量,那么整个程序会好得多。有关这方面的更多讨论,您可以告诉我们为什么您决定将变量设为静态。
答案 1 :(得分:1)
您是否要引用与方法参数同名的静态变量,并将静态变量作为类的名称添加前缀。在这种情况下,它将是ExamQ3a.codeArr
。
另一种处理方法是为方法参数选择不同的名称,或者为实例/静态变量开始使用公共前缀。
答案 2 :(得分:1)
需要注意的另一点是,在下面的代码中, statement1 永远不会被执行:
for (int i = codeArr.length; i < codeArr.length; i--) { statement1; }
它应该是
int length = codeArr.length;
for (int i = 0; i < length; i++) { ... }
或
int length = codeArr.length;
for (int i = (length-1); i > -1 ; i--) { ... }