Я делаю торговца процессором, который предлагает 2 сделки. Я разработал основы, но заблудился, заставляя логи c избегать «плохих» предложений между сделками (например, у сделки 1 есть A и B для C и D, у сделки 2 есть C и D для B и A).
Какой самый эффективный способ сравнить две сделки? Я экспериментировал с операторами if, но это быстро мешает и заставляет программу работать в 10 раз медленнее при загрузке новых сделок (как я и ожидал). Вот мой текущий код:
import java.util.Random;
import javax.swing.ImageIcon;
public class Trades
{
public void setRandomTrade(int toBeRandomized, Components.newLabel[] tradeSlots, String[] cArray) {
if (toBeRandomized == 1 || toBeRandomized == 3) {
RandomImage(0, 4, tradeSlots, cArray); // Force First Trade before checking for duplicates
while(TradeSlotExists(0, tradeSlots, cArray) == true) {
RandomImage(0, 4, tradeSlots, cArray); //Randomize First
}
}
if (toBeRandomized == 2 || toBeRandomized == 3) {
RandomImage(4, 8, tradeSlots, cArray); // Force Second Trade before checking for duplicates
while(TradeSlotExists(4, tradeSlots, cArray) == true) {
RandomImage(4, 8, tradeSlots, cArray); //Randomize Second
}
}
}
public void RandomImage(int beg, int end, Components.newLabel[] tArray, String[] cArray) {
for (int i=beg; i<end; i++) {
int rand = new Random().nextInt(5);
tArray[i].setIcon(new ImageIcon(getClass().getResource(cArray[rand])));
tArray[i].imgNum = rand;
}
}
public boolean TradeSlotExists(int key, Components.newLabel[] tradeSlots, String[] cArray) {
int keyEnd = key + 4;
while (key < keyEnd) {
for (int i=key; i<keyEnd; i++) {
if ((i != key) && (tradeSlots[i].imgNum == tradeSlots[key].imgNum)) {
return true;
}
} key += 1;
} return false;
}
}
Снимок экрана моей программы для визуального контекста и ясности