Как мне исправить эту проблему с циклом?
Я пишу программу Mastermind на Java. Таким образом, пользователь должен ввести количество колышков и цветов, и код будет случайным образом сгенерирован, и программа сделает свое дело и скажет им, получили ли они код или нет. У меня есть куча операторов IF, и я попытался поместить их в цикл for, чтобы мне не нужно было создавать оператор if, когда пользователь увеличивает amt колышков, но это не работает. Есть предложения? Вот этот код:
int [] guesses = new int[10]; for(int i = 0; i<peg.length;i++) { peg[i]=generator.nextInt(amtpegs)+1; System.out.println(peg[i]); } //Repeat till the player wins while(true){ //Get input from user for(int x = 0; x<amtpegs;x++) { guesses[x]=reader.readInt("Enter your numbers: "); } //Check if peg in correct index for(int y = 0; y<amtpegs;y++) { if (peg[y]==guesses[y]){ pegs++; } //Check if the color is correct // I want to REPLACE THIS WITH THE FOR LOOP if (guesses[0]==peg[0] || guesses[0]==peg[1] || guesses[0]==peg[2]){ color++; } if (guesses[1]==peg[1] || guesses[1]==peg[0] || guesses[1]==peg[2]){ color++; } if (guesses[2]==peg[0] || guesses[2]==peg[1] || guesses[2]==peg[2]){ color++; } if (guesses[3]==peg[3] || guesses[3]==peg[1] || guesses[3]==peg[2]){ color++; } System.out.println("You have "+pegs+" correct peg(s) and "+color+" correct colors"); //Exit if player wins if (color==amtcolors && pegs==amtpegs){ System.out.println("You have broken the code in "+guess+" guesses"); break; } //Increment guess count guess++; //Reset the color and peg value color=0; pegs=0; }
я попытался превратить операторы if или в цикл for, заменив индексы x и j в цикле for, но проблема в том, что переменный цвет слишком сильно увеличивается. Пример: если пользователь вводит 10 колышков и 9 цветов, то вывод должен быть таким же, но здесь он говорит, что в выводе 10 колышков и 20+ цветов иногда:
Есть Вопросы? Я пытался решить эту проблему в течение последнего дня.
Ява
Что я уже пробовал:
for(int x = 0; x<guesses.length;x++) { // System.out.println(x+"n"); for(int j = 0; j<peg.length-1; j++){ // System.out.println(j+"N"); if (guesses[x]==peg[j]){ color++; } } }