Сопоставление значений и уменьшение измерения в Java - PullRequest
0 голосов
/ 26 августа 2018

У меня есть файл данных, который состоит из меток двух предметов.

Файл выглядит так

Sl_No: Marks1 Marks2

1      10       20
2      10       20
3      10       20
4      10       20  
5      10       10
6      20       10
7      20       10
8      20       10
9      20       30
10     20       22
11     21       22
12     21       22
13     21       23
14     10       20
15     10       20

Теперь моя цельчто всякий раз, когда он получает ту же пару значений, добавьте эти отметкиТак что в моем примере sl_no с 1 по 4 имеют одинаковые пары значений (10,20).Таким образом, возвращается 40 для Marks1 и 80 для mark2.Sl_No: 5 не совпадает с sl_no: 4, поэтому остается неизменным.Серийные номера: от 6 до 8 имеют совпадающую пару, поэтому они возвращают 60 и 30. Sl_no: 9.0 и 10.0 не имеют соответствия, поэтому они остаются такими же, как и есть.У Sl_no: 11 и 12 совпадение, поэтому верните 42 и 44.и sl_no: 14 и 15 совпадение, поэтому верните 20 и 40.

Желаемый результат:

4  40  80
5  10  10
8  60  30
9  20  30
10 20  22
12 42  44
13 21  23
15 20  40

Мой код:

public class Marksmatch {
public static void main(String args[]){
    int []sl_no={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    int []Marks1={10,10,10,10,10,20,20,20,20,20,21,21,21,10,10};
    int []Marks2={20,20,20,20,10,10,10,10,30,22,22,22,23,20,20};
    int addMarks1=0,addMarks2=0;
    for(int i=0;i<sl_no.length-1;i++){
        if(Marks1[i]== Marks1[i+1]&&Marks2[i]==Marks2[i+1]){
            addMarks1=addMarks1+Marks1[i+1];
            addMarks2=addMarks2+Marks2[i+1];
            System.out.println(addMarks1);
            System.out.println(addMarks2);
        }
    }

}

}

Вывод: 10 20 20 40 30 60 50 70 70 80 91 102 101 122

Это не дало мне желаемого результата.Как я мог продолжить?

1 Ответ

0 голосов
/ 26 августа 2018

Ваша логика неверна.Вы должны отслеживать суммы текущей группы и печатать их только после того, как вы закончите с группой:

int addMarks1=Marks1[0],addMarks2=Marks2[0]; // initialize the sums of the first group
for(int i=0;i<sl_no.length-1;i++){
    if(Marks1[i]== Marks1[i+1] && Marks2[i]==Marks2[i+1]) {
        // add to the current group
        addMarks1=addMarks1+Marks1[i+1];
        addMarks2=addMarks2+Marks2[i+1];
    } else {
        // print the previous group and start a new group
        System.out.println(sl_no[i] + " " + addMarks1 + " " + addMarks2);
        addMarks1=Marks1[i+1];
        addMarks2=Marks2[i+1];
    }
}
// print the last group
System.out.println(sl_no[sl_no.length-1] + " " + addMarks1 + " " + addMarks2)

Вывод:

4 40 80
5 10 10
8 60 30
9 20 30
10 20 22
12 42 44
13 21 23
15 20 40
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...