Почему мой счетчик не считается и мой ArrayList не добавляет новые целочисленные значения в массив? - PullRequest
0 голосов
/ 07 апреля 2020

Основным источником моих проблем является мой метод «add», массив «mathAnswers» и счетчик «Score».

Я пытаюсь сравнить значения массива, заставить их выполнять математическую функцию , а затем проверьте, соответствует ли введенный пользователем ответ. Я также хочу, чтобы правильный ответ был добавлен в массив, а затем распечатал этот массив вместе со счетчиком, проверяющим счет пользователей.

Я столкнулся с проблемой, когда мой счетчик не увеличивается, мои значения не вводятся в мой массив, и все остается 0. Вот мой код.

    import java.util.Scanner;
import java.util.ArrayList;
public class Program7 {

    public static void main(String[] args) {
        int [] mathQuizLeft = {
                8,  //0
                14, //1
                16, //2
                8,  //3
                17, //4
                5,  //5
                27, //6
                4,  //7
                20, //8
                13, //9
        };

        int [] mathQuizRight = {
                13, //0
                12, //1
                4,  //2
                18, //3
                4,  //4
                4,  //5
                9,  //6
                7,  //7
                4,  //8
                4,  //9
        };


        Scanner scanner = new Scanner(System.in);

        double userAns = 0;
        double answer = 6;

        System.out.println("Welcome to the 3rd Grade Math Quiz. \n");
        System.out.println("The Quiz begins now: \n"
                + "1. 8 - 13\n2. 14 + 12\n3. 16 / 4\n4. 8 + 18\n5. 17 % 4\n6. 5 x 4\n"
                + "7. 27 / 9\n8. 4 - 7\n9. 20 x 4\n10. 13 - 4");

        for(int i = 0; i <= 10; i++) {
            if (i < 10) {
                System.out.printf("%d. ", (i + 1));
                userAns = Double.valueOf(scanner.nextDouble());
                add(mathQuizLeft, mathQuizRight, i, answer, userAns);
            }
            else {
                add(mathQuizLeft, mathQuizRight, i, answer, userAns);
            }
        }
    }



    public static void add(int[] array1, int[] array2, int i, double answer, double userAns) {
        ArrayList<Integer> mathAnswers = new ArrayList<>(); //for storing functions

        int score = 0;

        if (i == 1 || i == 3) { //addition
            answer = array1[i] + array2[i];
            if (userAns == answer) {
                score++;
                mathAnswers.add(i);
            }
        } else if (i == 0 || i == 7 || i == 9) { //subtraction
            answer = array1[i] - array2[i];
            if (userAns == answer) {
                score++;
                mathAnswers.add(i);
            }
        } else if (i == 5 || i == 8) { //multiplication
            answer = array1[i] - array2[i];
            if (userAns == answer) {
                score++;
                mathAnswers.add(i);
            }
        } else if (i == 2 || i == 6) { //multiplication
            answer = array1[i] - array2[i];
            if (userAns == answer) {
                score++;
                mathAnswers.add(i);
            }
        } else if (i == 4) { //multiplication
            answer = array1[i] - array2[i];
            if (userAns == answer) {
                score++;
                mathAnswers.add(i);
            }
        } else if (i == 10) {
            for (double array: mathAnswers) {
                System.out.println(array);
            }
            System.out.println(score);
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Мне удалось решить мою проблему. Я могу просто удалить это, но мне пришлось много поиграть с этим методом, чтобы выяснить, что может увеличить его и добавить значение в массив. В итоге я использовал ArrayList для добавления значений для него вместо примитивного массива. В итоге я переписал весь метод, но в итоге заставил его работать.

import java.util.Scanner;
import java.util.Random;
import java.util.ArrayList;
public class Program7 {

    public static void main(String[] args) {
        int [] mathQuizLeft = {
                8,  //0
                14, //1
                16, //2
                8,  //3
                17, //4
                5,  //5
                27, //6
                4,  //7
                20, //8
                13, //9
        };

        int [] mathQuizRight = {
                13, //0
                12, //1
                4,  //2
                18, //3
                4,  //4
                4,  //5
                9,  //6
                7,  //7
                4,  //8
                4,  //9
        };

        int score = 0;
        int userAns = 0;
        int answer = 0;

        System.out.println("Welcome to the 3rd Grade Math Quiz. \n");
        System.out.println("The Quiz begins now: \n"
                + "1. 8 - 13\n2. 14 + 12\n3. 16 / 4\n4. 8 + 18\n5. Remainder of 17 / 4\n6. 5 x 4\n"
                + "7. 27 / 9\n8. 4 - 7\n9. 20 x 4\n10. 13 - 4");

        add(mathQuizLeft, mathQuizRight, answer, score, userAns);

    }

    public static void add(int[] array1, int[] array2, int answer, int score, int userAns) {
        ArrayList<Integer> mathAnswers = new ArrayList<>(); //for storing functions
        Scanner scanner = new Scanner(System.in);

        answer = 0;
        score = 0;

        for(int i = 0; i < 10; i++) {

            if(i == 10) {
                break;
            }

            if (i == 1 || i == 3) { //addition
                answer = array1[i] + array2[i];
            } else if (i == 0 || i == 7 || i == 9) { //subtraction
                answer = array1[i] - array2[i];
            } else if (i == 5 || i == 8) { //multiplication
                answer = array1[i] * array2[i];
            } else if (i == 2 || i == 6) { //division
                answer = array1[i] / array2[i];
            } else { //modulo
                answer = array1[i] % array2[i];
            }

            System.out.printf("%d. ", (i + 1));
            userAns = Integer.valueOf(scanner.nextInt());

            mathAnswers.add(answer);

            if (userAns == answer) {
                score++;
            }

            System.out.println(score);
            System.out.println(mathAnswers.get(i));
        }

        if (score >= 7) {
            System.out.println("Your score was: " + score + " - You passed!");
        }
        else {
            System.out.println("Your score was: " + score + " - Please Try again.");
        }
    }
}
0 голосов
/ 07 апреля 2020

Ваша ошибка в методе add (). После каждого правильного ответа вы подсчитываете счет и добавляете i в ArrayList, но вы не можете сохранить arraylist и счет. Вы должны объявить ArrayList и счет глобальным или вы должны вернуть его и сохранить в методе main ().

public class Program7 {
  private static int score = 0;
  private static ArrayList<Integer> mathAnswers = new ArrayList<>();

  public static void main(String[] args) {
    ...
  }

  public static void add(...) {
    if(...) {
      ...
    }
    ...
  }
}
...