我正在尝试在一个方法中实现一个算法,该方法接收两个类型为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转换为布尔'。
有什么想法吗?
答案 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。