Сложите числа между началом и концом и найдите остаток от деления суммы

#java #sum #modulo

#java #сумма #modulo

Вопрос:

Привет, сообщество StackOverflow.

У меня проблема с домашним заданием, и поэтому я не ожидаю, что вы, ребята, буквально решите ее за меня, но я борюсь с этим конкретным вопросом уже 5 дней и на самом деле не понимаю, что я делаю неправильно. Мы должны сложить все числа между началом и концом и разделить эту сумму на заданный делитель, если результат этого деления равен 0, программа должна выдать true , если нет, то false с использованием System.out.println() .

Я знаю, что это очень простая проблема, но это моя вторая неделя, поэтому я еще не слишком хорошо знаком со всеми функциями Java. Это то, что я получил, но это не дает мне никакого ответа вообще. Я был бы признателен, если бы вы могли указать, где я ошибся. Заранее спасибо, ребята!

 public class EX6 {

public static void main(String[]args) {
    {
    }
    int divisor = 14;
    int start = 42;
    int end = 678;
    int sum = 0;
    int i;
    i= 42;
    while (i<=end) sum= start  start  ; i  ;
    if (sum % divisor == 0) {System.out.println(true);
    } else{
    System.out.println(false);
} }}
 

Ответ №1:

Во-первых, вместо sum = start start «Я думаю, что ты хочешь sum = sum start «. Вы хотите добавить к текущему итогу, а не установить sum равным start start 1 .

Во-вторых, println необходимо передать строку ( "true" , not true ).

Кроме того, это не совсем ошибка, но в переменной нет необходимости i . Если вы продумаете это, i всегда равно start , так что вы можете просто ссылаться start вместо i .

 public class EX6 {

    public static void main(String[]args) {
        int divisor = 14;
        int start = 42;
        int end = 678;
        int sum = 0;

        while (start <= end) {
            sum = sum   start  ; 
        }

        if (sum % divisor == 0) {
            System.out.println("true");
        } else{
            System.out.println("false");
        } 
    }
}
 

Небольшое замечание о вашем исходном коде: всегда рекомендуется заключать код, который вы хотите выполнить в цикле, в скобки. Например, в вашем коде, while (i<=end) sum= start start ; i ; , i не является частью цикла, потому что в нем нет скобок. Так что проблема, вероятно, будет существовать вечно. Чтобы исправить это утверждение, вы бы просто использовали:

 while (condition) {
    //statement 1
    //statement 2
    //statement 3
}
 

Ответ №2:

Вот что вам нужно сделать:

 int divisor = 14;
int start = 42;
int end = 678;
int sum = 0;
int i;
while (start<=end){
 sum =start; 
 start = start  ;
}
if (sum % divisor == 0) {
   System.out.println(true);
} else{
   System.out.println(false);
}
 

Комментарии:

1. Это неправильно. Он устанавливает sum = start start на каждой итерации цикла. Таким образом, в конечном итоге сумма будет просто равна 678 678. Неправильный ответ.

2. Прошу прощения, моя ошибка опечатки… Я изменю его на Sum =start;