わかりました、必要な助けが得られるように、質問を正しく表現しようとしていました。私が得たのは、文字列配列を別の文字列配列と比較する単純な財布/コイン プログラムです。この割り当てでは、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