0

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

例如

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 转换为 boolean”。

有任何想法吗?

4

3 回答 3

2

'类型不匹配:无法从 int 转换为 boolean'

你得到一个,int因为你正在做一个赋值:=运算符。要比较两个整数,您需要使用==运算符。

尝试

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

你会得到一个布尔值。

于 2013-01-25T15:10:21.507 回答
2

你的问题在这里:

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

您正在对 to 进行归因,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
...
于 2013-01-25T15:10:25.310 回答
2

你应该像这样比较它们

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

否则,您将 L2 归因于 L1。

于 2013-01-25T15:11:08.553 回答