如何从另一个方法访问数组中的元素?

时间:2013-01-25 15:05:37

标签: java arrays

我正在尝试在一个方法中实现一个算法,该方法接收两个类型为studentlist的列表,我需要从构造函数方法studentList访问该数组以获取大小和学生列表之间要比较的数字。

e.g。

for (int i = 0; i < L1.studentID.length-1; i++) {
    for (int j = 0; j < L2.studentID.length-1; j++) {
        if (L1.studentID[i] = L2.studentID[j]) {
            num++; }}}

大部分构造函数,不包括第二个用于访问文件中的列表而不是随机生成的列表:

studentID=new int[size];
boolean[] usedID=new boolean[IDrange];
for (int i=0;i<IDrange;i++) usedID[i]=false;
for (int i=0;i<size;i++) {
    int t;
    do {
    t=(int)(Math.random()*IDrange);
    } while (usedID[t]);
    usedID[t]=true;
    studentID[i]=t; }

大小(list.studentID.length或者我本来可以使用内置的list.numberOfStudents)似乎很好,但是我在获取数组元素时遇到了麻烦。我想我可以做list.studentID[i]但我得到'类型不匹配:无法从int转换为布尔'。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

  

&#39;类型不匹配:无法从int转换为布尔值&#39;

您正在获得int,因为您正在执行任务:=运算符。 要比较两个整数,您需要使用==运算符。

尝试

if (L1.studentID[i] == L2.studentID[j]) {

你会得到一个布尔值。

答案 1 :(得分:2)

您的问题在这里:

if (L1.studentID[i] = L2.studentID[j]) 

您正在将L2.studentID[j]归属为L1.studentID[i],然后将L1.studentID[i]的值传递给if

java中的if期望显式为布尔值。

你要么做:

if (L1.studentID[i] == L2.studentID[j])

if ((L1.studentID[i] = L2.studentID[j])!=0)

您目前拥有的代码与执行相同:

L1.studentID[i] = L2.studentID[j];
if (L1.studentID[i]){  <-- this won't work because L1.studentID[i] is an int and the if expects a boolean
...

答案 2 :(得分:2)

你应该像这样比较它们

if (L1.studentID[i] == L2.studentID[j])

否则,您将L2归属为L1。