Итак, вот моя проблема: у меня есть два массива, я хочу подсчитать, сколько значений находятся в одной и той же позиции [i] в обоих массивах, и сколько значений одинаковы в обоих массивах, но для разных [i]
Я попробовал обычный цикл с for и размер массива, но он отображает странные значения, которые далеки от ожидаемых
package stackOverflow;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class mainStack extends JFrame implements ActionListener {
JButton jbr,jbv,jbb,jbo,jbn,jbj;
JTextField l11b;
String a;
int tabRef[]= {0,1,2,3};
int correctAndSameCase=0;
int correctButDiffCase=0;
mainStack(){
this.setLayout(null);
jbr = new JButton("Rouge");
jbr.setBounds(0,80,85,30);
add(jbr);
jbv = new JButton("Vert");
jbv.setBounds(125, 80, 85, 30);
add(jbv);
jbb = new JButton("Bleu");
jbb.setBounds(0, 120, 85, 30);
add(jbb);
jbj = new JButton("Jaune");
jbj.setBounds(125, 120, 85, 30);
add(jbj);
jbo = new JButton("Orange");
jbo.setBounds(0, 160, 85,30);
add(jbo);
jbn = new JButton("Noir");
jbn.setBounds(125,160, 85,30);
add(jbn);
jbr.addActionListener(this);
jbv.addActionListener(this);
jbb.addActionListener(this);
jbj.addActionListener(this);
jbo.addActionListener(this);
jbn.addActionListener(this);
setLayout(null);
setSize(800,800);
setVisible(true);
}
private int index = 0;
private int p=0;
private int tabAnswer[][] = new int[3][4];
private int i;
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(jbr)) {
tabAnswer[p][index] = 0;
} else if (e.getSource().equals(jbv)) {
tabAnswer[p][index] = 1;
} else if (e.getSource().equals(jbj)) {
tabAnswer[p][index] = 2;
} else if (e.getSource().equals(jbb)) {
tabAnswer[p][index] = 3;
} else if (e.getSource().equals(jbo)) {
tabAnswer[p][index] = 4;
} else if (e.getSource().equals(jbn)) {
tabAnswer[p][index] = 5;
}
index++;
if (index >= tabAnswer[p].length) {
System.out.println(Arrays.toString(tabAnswer[p]));
for(i=0 ; i<tabRef.length;i++) {
if(tabAnswer[p][i]==tabRef[i]) {
correctAndSameCase++;
}else if(tabAnswer[p][i]==tabRef[0] & tabAnswer[p][i]!=tabRef[i] || tabAnswer[p][i]==tabRef[1] & tabAnswer[p][i]!=tabRef[i] || tabAnswer[p][i]==tabRef[2]& tabAnswer[p][i]!=tabRef[i] ||tabAnswer[p][i]==tabRef[3] & tabAnswer[p][i]!=tabRef[i]) {
correctButDiffCase++;
}
}
index = 0;
p++;
System.out.println(correctAndSameCase+" number are on the same case on both arrays");
System.out.println(correctButDiffCase+" number are on different case on both arrays");
if(p>=3) {
p=0;
}
correctAndSameCase=0;
correctButDiffCase=0;
}
}
public static void main(String[] args) {
mainStack t= new mainStack();
}
Здесь для tabAnswer {5,4,3,2}
correctAndSameCase
должно быть 0 иcorrectButDiffCase
должно быть 2, но вместо этого оно дает мне 0 и 1. В качестве ответа.
РЕДАКТИРОВАТЬ: я вижу, что проблема в том, чтобы установить значение correctButDiffCase
, но я не знаюкак это исправить