私はこのプロジェクトで緊急に助けが必要です。プログラミング課題のクラスを実装しようとしていますが、 、、およびのメソッドでBag
ハングアップしています。addAll()
Union()
equals()
編集:割り当てによるとaddAll()
、2番目の配列のすべてのオブジェクトを最初の配列に追加することになっています。実行時にエラーが発生しなくなりましたが、何らかの理由で 2 番目の配列のすべての要素が追加されず、最初の 2 つしか追加されません。
編集:についてUnion()
は、最初の 2 つのバッグのすべての内容を含む 3 番目のバッグを作成することになっています。ArrayIndexOutOfBoundsException
このメソッドを実行すると、エラーが発生しました。biddulph.r に続くコードを更新しましたが、これもうまく機能しています。再度、感謝します!
編集:「最初の試み」そしてequals()
、バッグのサイズをチェックしてサイズが等しいことを確認し、次に同じ数字が含まれているかどうかをチェックすることになっています。したがって、現在書かれているように、私のequals()
メソッドはサイズを比較してそのブール値を返しますが、実際の値を比較する方法がわかりません。
import java.util.Arrays;
import javax.swing.*;
public class bag {
int maxSize = 10; //Size of the arrays
int count = 0; //Number of items stored in the array
int[] a;
int[] b;
bag c;
bag d;
public bag() {
//for(int i = 0; i < maxSize; i++){
//a[i] = (int)(1+Math.random()*100);
//}
a = new int[maxSize];
}
public String bagString() {
return Arrays.toString(a);
}
public void add(int b) {
try {
a[count] = b;
count++;
} catch (ArrayIndexOutOfBoundsException n) {
JOptionPane.showMessageDialog(null, "Array is full, element will not be added");
}
}
public void removeRandom() {
int i = (int)(1 + Math.random() * (count - 1));
a[i] = a[count - 1];
a[count - 1] = 0;
count--;
}
public void remove(int b) {
for (int i = 0; i < maxSize; i++) {
if (contains(b)) {
a[i] = a[count - 1];
}
}
}
public boolean isEmpty() {
if (count == 0) return true;
else return false;
}
public boolean contains(int b) {
int tf = 0;
for (int i = 0; i < maxSize; i++) {
if (a[i] == b) tf = 1;
}
if (tf == 1) return true;
else return false;
}
public int size() {
return count;
}
public void addAll(bag c, bag d) {
if (a.length >= c.size() + d.size()) {
for (int i = 0; c.size() <= d.size(); i++) {
c.add(d.a[i]);
}
}
}
public void union(bag c, bag d) {
bag bigger = new bag();
for (int i = 0; i < c.size(); i++) {
bigger.add(c.a[i]);
}
for (int i = 0; count < d.size() - 1; i++) {
bigger.add(d.a[i]);
}
System.out.println(bigger.bagString());
}
public boolean equals(bag c, bag d){
if(c.size() != d.size()){
return false;
}else{
for(int i = 0; i < c.union(c, d).size(); i++){
if(c.union(c, d).contains(c.a[i]) && c.union(c, d).contains(d.a[i])){
return true;
}
}
return false;
}
}
}
皆さんが私に与えることができる助けに本当に感謝しています、ありがとう。
編集:ご協力いただきありがとうございます。皆さんは命の恩人です。