好吧,我試圖正確地說出問題,以便獲得我需要的幫助。我得到的是一個簡單的錢包/硬幣程序,它將字符串數組與另一個字符串數組進行比較。原諒長循環/嵌套循環/邏輯,因爲在這個任務中,我不能使用java數組和集合類中的方法。 這是一個班級作業,所以請解釋過程,而不僅僅是回答。 (理論):我在想,我對2個轉換數組的比較是問題的原因,但我找不出一種方法來比較數組列表中的每個元素與另一個數組中的每個元素名單。轉換後的數組可以與另一個轉換後的數組進行比較嗎?
Purse.class:
import java.util.ArrayList;
/**
* A purse holds a collection of coins.
*/
public class Purse
{
private ArrayList<String> coins;
/**
* Constructs an empty purse.
*/
public Purse()
{
coins = new ArrayList<String>();
}
/**
* Add a coin to the purse.
*
* @param coinName
* the coin to add
*/
public void addCoin(String coinName)
{
coins.add(coinName);
}
/**
* Returns a string describing the object.
*
* @return a string in the format "Purse[coinName1,coinName2,...]"
*/
public String toString()
{
String coinName1 = "Quarter";
String coinName2 = "Dime";
String coinName3 = "Nickel";
String coinName4 = "Penny";
String str = "Actual:"
+ "Purse["
+ (coinName1 + "," + coinName2 + "," + coinName3 + "," + coinName2)
+ "]";
return str;
}
/**
* Determines if a purse has the same coins in the same or different order
* as another purse.
*
* @param other
* the other purse
* @return true if the two purses have the same coins in the same or
* different order, false otherwise
*/
public boolean sameCoins(Purse other)
{
if (this.coins.size() != other.coins.size())
{
System.out.println("1");
return false;
}
int matched = 0;
for (int i = 0; i < this.coins.size(); i++)
{
for (int j = 0; j < other.coins.size(); j++)
{
if (this.coins.toArray() == other.coins.toArray())
{
matched++;
System.out.println("2");
System.out.println(this.coins.toArray());
System.out.println(other.coins.toArray());
break;
}
}
}
return matched == this.coins.size();
}
}
PurseTester.class:
/**
* This class tests the Purse class.
*/
public class PurseTester
{
public static void main(String[] args)
{
Purse p = new Purse();
p.addCoin("Quarter");
p.addCoin("Dime");
p.addCoin("Nickel");
p.addCoin("Dime");
System.out.println(p.toString());
System.out.println("Expected: Purse[Quarter,Dime,Nickel,Dime]");
Purse a = new Purse();
a.addCoin("Quarter");
a.addCoin("Dime");
a.addCoin("Nickel");
a.addCoin("Dime");
Purse b = new Purse();
b.addCoin("Nickel");
b.addCoin("Dime");
b.addCoin("Dime");
b.addCoin("Quarter");
System.out.println(a.sameCoins(b));
System.out.println("Expected: true");
Purse c = new Purse();
c.addCoin("Quarter");
c.addCoin("Penny");
c.addCoin("Nickel");
c.addCoin("Dime");
Purse d = new Purse();
d.addCoin("Nickel");
d.addCoin("Dime");
d.addCoin("Dime");
d.addCoin("Quarter");
System.out.println(c.sameCoins(d));
System.out.println("Expected: false");
}
}
輸出是:
Actual:Purse[Quarter,Dime,Nickel,Dime]
Expected: Purse[Quarter,Dime,Nickel,Dime]
false
Expected: true
false
Expected: false
預期輸出:
Actual:Purse[Quarter,Dime,Nickel,Dime]
Expected: Purse[Quarter,Dime,Nickel,Dime]
true
Expected: true
false
Expected: false
沒有** remove的迭代器方法**基本上和我所認爲的一樣(我相信)OP正在嘗試使用double-for-loop來做**。值得注意的是,如果第一個數組中有兩個相同的項目,並且第二個數據項中只有一個項目,那麼這個(不帶'remove')可以將2個數組分類爲相等,因爲兩個數組都會匹配到一個項目。 – Dukeling 2013-03-10 22:51:15
是的,這個工程。我只是指出,我認爲OP可能一直試圖做的事情不會起作用,這與此類似,並且由於「移除」而沒有這個問題。也許有人會覺得有用。 – Dukeling 2013-03-10 22:56:35