Java-программирование: как мне сделать это для циклической программы, которая принимает пользовательский ввод, вычитает ввод правильно - PullRequest
0 голосов
/ 22 декабря 2018

Я делаю программу, которая принимает вводимые пользователем данные для вычитания всех чисел, желаемых пользователем

Сначала я заставил программу спросить, сколько чисел пользователь хочет вычесть, и инициализировал значение в int inputNum , который затем передается в цикл for для (int Count = 1; Count <= inputNum; Count ++) </em>, так что программа выполняет цикл для пользовательского ввода на основе inputNum .

К сожалению, вывод неправильный.Я не могу понять, как это будет работать правильно.

Я пытался переключить оператора в разность , сделав разницу = - toBeSubtracted; в разницу - = toBeSubtracted;

Для разница = - toBeSubtracted; , вот пример вывода

run:
How many numbers do you want to subtract? 
2
Input numbers you want to subtract: 
10
5
The difference of those numbers is -5

Для разница - = toBeSubtracted; , вот пример вывода

run:
How many numbers do you want to subtract? 
2
Input numbers you want to subtract: 
10
5
The difference of those numbers is -15

Вот код:

import java.util.*;
public class ForLoops_Difference 
{
    public static void main(String[] args) 
    {
        Scanner scan = new Scanner (System.in);
        System.out.println("How many numbers do you want to subtract? ");
        int inputNum = scan.nextInt();
        int difference = 0;

        System.out.println("Input numbers you want to subtract: ");
        for (int Count = 1 ;Count<=inputNum; Count++)
        {
            int toBeSubtracted = scan.nextInt();
            difference =- toBeSubtracted;
        }
        System.out.println("The difference of those numbers is " + difference);
    } 
}

Ответы [ 4 ]

0 голосов
/ 22 декабря 2018

Проблема не в том, что ваша программа работает некорректно.

Проблема в том, что требования являются бессмысленными.Вы можете иметь разницу между двумя числами.Разница между 19 и 8 равна 11. Разницы между 3 и более числами не существует.Поэтому ни одна программа никогда не сможет произвести это.

Тем не менее, Дэвис Херринг прав в комментарии: нет оператора =-.Вы пытались использовать один в строке:

           difference =- toBeSubtracted;

Но строка понимается как просто:

           difference = -toBeSubtracted;

Таким образом, ваша программа просто выводит отрицание последнего введенного числа.Я попытался ввести три числа, 11, 3 и 5. В первый раз через разность петель установлено значение -11.В следующий раз это значение перезаписывается и вместо него устанавливается -3.На последней итерации разница устанавливается в -5, что «выигрывает» и выводится.

Вместо этого я предлагаю, чтобы ваша программа всегда вычитала 2 числа, как вы пытаетесь в своем примере.Таким образом, пользователю не нужно вводить количество цифр, а просто ввести два числа.Тогда вам также не нужна петля.Просто прочитайте первое число, прочитайте второе число, вычтите второе из первого (или первое из второго, или меньшее из большего, что вы хотите) и напечатайте результат.Я оставляю вам код, чтобы не испортить его.

0 голосов
/ 22 декабря 2018

Я сделал это

import java.util.*;
public class ForLoops_Difference 
{
    public static void main(String[] args) 
    {
        Scanner scan = new Scanner (System.in);
        System.out.println("How many numbers do you want to subtract? ");

        int inputNum = scan.nextInt();
        int difference = 0;   
        int currentNumber = 0; //current number from scanner
        System.out.println("Input numbers you want to subtract: ");
        for (int Count = 1 ;Count<=inputNum; Count++)
        {   
            if(Count == 1)
            {
                //nothing to subtract if count is 1
                currentNumber = scan.nextInt();
                difference =  currentNumber;
            }
            else {
                currentNumber = scan.nextInt();
                difference = difference - currentNumber;    
            }     
       }
       System.out.println("The difference of those numbers is " + difference);
    }
}

Вы начали свою разницу с 0. Итак, если вы вычли два числа, 15 и 3, то вы получите 0 - 15 - 3 = -18.Я установил разницу равной первому числу 15 в первом цикле.Тогда это должно работать правильно, потому что вы делаете 15 - 3 = 12.

0 голосов
/ 22 декабря 2018

Вы должны понимать сокращенную запись оператора.Вы должны написать - = для минус сокращения.Сокращение равно разности = разности - вычтено.Поскольку ваше начальное значение равно 0, оно становится 0-10-5 = -15.

. Присвойте первое значение разности, а затем выполните вычитание следующих значений.

Так что-то вроде:

  difference = scanner.nextInt();

А затем выполните цикл для остальных значений до минус от начального значения.

0 голосов
/ 22 декабря 2018

Хорошо, это может помочь вам:

difference = 0

и чем у вас есть:

difference -= toBesubtracted

так что вы делаете:

difference = difference - toBeSubtracted

, чтов терминах это

difference = 0 - 10
difference = -10 - 5

, таким образом, вы получите -15

, а где у вас есть

difference =- toBeSubtracted

, то же самое, что и

difference = -1 * toBeSubtracted

Таким образом, вы получите -5

Я полагаю, вы хотите, чтобы вывести 5. Вот ваш код с одним изменением

import java.util.*;
public class ForLoops_Difference 
{
    public static void main(String[] args) 
    {
        Scanner scan = new Scanner (System.in);
        System.out.println("How many numbers do you want to subtract? ");
        int inputNum = scan.nextInt();
        int difference = scan.nextInt(); // so read in the first number here.

        System.out.println("Input numbers you want to subtract: ");
        for (int Count = 1;Count<inputNum; Count++) // go till from 1 to inputNum - 1 because you have already got one number above
        {
            int toBeSubtracted = scan.nextInt();
            difference -= toBeSubtracted;
        }
        System.out.println("The difference of those numbers is " + difference);
    } 
}
...