MOOC Exercise 36 help: циклы, запоминание и окончание - PullRequest
0 голосов
/ 05 июля 2019

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

В другом примечании говорится, что переменные sum2 и инициализатор среднего '0' являются избыточными. Мой код все еще выполняется, но почему он говорит это только для sum2 и среднего, а не для всех других переменных, которые я инициализировал в начале 0? *

Спасибо!

public static void main(String[] args) {

    Scanner reader = new Scanner(System.in);

    //Variables
    System.out.println("Type numbers: ");
    int numbers = Integer.parseInt(reader.nextLine());
    int counter = 0;
    int sum = numbers;
    int minus = -1;
    int even = 0;
    int odd = 0;
    int sum2 = 0;
    double average = 0;

    while (numbers >= 0) {
        numbers = Integer.parseInt(reader.nextLine());
        sum+= numbers;
        counter = counter + 1;
        if (numbers % 2 == 0 ) {
            even++;
        }else {
            odd++;
        }
    }

    if (numbers == minus) {
        int sum2 = sum + 1;
        double average = (double) sum2 / counter;
        System.out.println("Thank you and see you later!");
        System.out.println("The sum is " + sum2);
        System.out.println("How many numbers: " + counter);
        System.out.println("Average: " + average);
        System.out.println("Even numbers " + even);
        System.out.println("Odd numbers " + odd);

    }
}

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Это решение, спасибо всем!

import java.util.Scanner;

проект публичного класса { public static void main (String [] args) {

    Scanner reader = new Scanner(System.in);

    int numbers = 0;
    int counter = 0;
    int sum = 0;
    int even = 0;
    int odd = 0;


    System.out.println("Type number: ");
        while (numbers >= 0) {
        numbers = Integer.parseInt(reader.nextLine());
        sum = sum + numbers;
        counter = counter + 1;
        if (numbers >= 0 && numbers % 2 == 0 ) {
            even++;
        }
        if (numbers >= 0 && numbers % 2 != 0) {
            odd++;
        }
        }
    if (numbers == -1) {
        int sum2 = sum + 1;
        int counter2 = counter - 1;
        double average = (double) sum2 / counter2;
        System.out.println("Thank you and see you later!");
                System.out.println("The sum is " + sum2);
                System.out.println("How many numbers: " + counter2);
                System.out.println("Average: " + average);
                System.out.println("Even numbers " + even);
                System.out.println("Odd numbers " + odd);

    }
}

}

0 голосов
/ 05 июля 2019

Вы не должны инициализировать numbers чтение первой строки.Когда вы делаете это, другие счетчики не инициализируются правильно.Исправьте одно,

int numbers = 0; 

Что касается избыточности sum2, то она избыточна 1 , поскольку int sum2 = sum + 1; должно быть sum2 = sum + 1; (или удалить int sum2 = 0;).У вас есть две переменные с именем sum2.Та же проблема с double average = (double) sum2 / counter; и double average = 0;, есть две переменные с именем average.

1 Здесь избыточная избыточность является преднамеренной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...