Использование результатов из циклов для другого - PullRequest
0 голосов
/ 19 февраля 2020

Я должен извиниться, потому что я знаю, что это довольно глупый вопрос (я только начал изучать java), но как я могу использовать результат "while" l oop для другого l oop? Мне нужно подготовить программу, которая будет добавлять цифры из двух указанных чисел. Прежде всего мне нужно добавить цифры от number1, затем number2 и, в конце, суммарные цифры обоих. sum1 и sum2 работают довольно хорошо, но его окончание на этом этапе, sum3, и операции в l oop nr3 невидимы для моей машины.

Я думаю, что я должен объединить это как-то в одну л oop но я понятия не имел, как (я учусь по книгам Хорстманна и Каденхеда, и нет хорошего ответа)

Спасибо за ответ, и я буду рад, если он не будет быть прямым обновлением кода, но, может быть, какой-то намек, где или что я должен искать! Спасибо :) У меня есть что-то вроде этого:

public static void main(String[] args) {
    int sum1 = 0;
    int sum2 = 0;
    int sum3 = 0;
    Scanner scn = new Scanner(System.in);
    System.out.println("1 : ");
    int l1 = scn.nextInt();
    System.out.println("2 : ");
    int l2 = scn.nextInt();
    System.out.println((0 > l1 || 0 > l2 ? "ERROR-NEGATIVE NUMBER" : "OK"));
    while (l1 > 0) {
        sum1 += l1 % 10;
        l1 /= 10;
    }
    //System.out.println(sum1);
    while (l2 > 0) {
        sum2 += l2 % 10;
        l2 /= 10;
    }
    //System.out.println(sum2);
    while (sum1+sum2>0) {
        sum3 +=(sum1+sum2) %10;
        (sum1+sum2) /=10;
    }

}

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

лучший способ - использовать метод для этой цели и использовать его повторно:

public static void main(String[] args) {
    int sum3 = 0;
    Scanner scn = new Scanner(System.in);
    System.out.println("1 : ");
    int l1 = scn.nextInt();
    System.out.println("2 : ");
    int l2 = scn.nextInt();
    System.out.println((0 > l1 || 0 > l2 ? "ERROR-NEGATIVE NUMBER" : "OK"));
    sum3 = addDigit(addDigit(l1)+addDigit(l2))

}

private static int addDigit(int number){
    int sum = 0;
    while (number > 0) {
        sum += number % 10;
        number /= 10;
    }
    return sum;
}
0 голосов
/ 19 февраля 2020

основная проблема в том, что результат оператора /= должен храниться где-то, результат sum1 + sum2 не обеспечивает такое хранилище.

, чтобы этот код работал, вам нужно сохранить sum1 + sum2 в некоторая временная переменная, поэтому замените

while (sum1+sum2>0) {
    sum3 +=(sum1+sum2) %10;
    (sum1+sum2) /=10;
}

на что-то вроде:

int tempsum = sum1 + sum2;
while (tempsum > 0) {
    sum3 += tempsum % 10;
    tempsum /= 10;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...