0

タイプの2つのリストを受け取る1つのメソッドでアルゴリズムを実装しようとしています。リスト間で比較するサイズと学生数を取得するには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++; }}}

ほとんどのコンストラクター。ランダムに生成されるのではなく、ファイル内のリストにアクセスするための2番目のコンストラクターは含まれません。

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割り当てを行っているため、=演算子を取得しています。==2 つの整数を比較するには、演算子を使用する必要があります。

試してみてください

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

ブール値を取得します。

于 2013-01-25T15:10:21.507 に答える
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
...
于 2013-01-25T15:10:25.310 に答える
2

このように比較する必要があります

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

それ以外の場合は、L2 から L1 への帰属を行っています。

于 2013-01-25T15:11:08.553 に答える