Как сделать калькулятор, который умножает более двух чисел? - PullRequest
0 голосов
/ 11 июля 2020

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

Вот мой код:

import java.util.Scanner;

public class SumOfNumbers {
public static void main(String arg[])
{
int n;
int sum = 0;

Scanner s = new Scanner(System.in);

System.out.print("Please enter how many numbers you want to add up to: ");
n = s.nextInt();

System.out.println("you entered: " + n + "");
sum = addConsecutiveNumbers(n);

System.out.println("sum of 1 to "+n+" = "+sum);



//following code is sum of any numbers you entered from console
//store the numbers into an array
int num;
int sumOfNums=0;

System.out.print("Please enter how many numbers you want to sum: ");
num=s.nextInt();
System.out.println("you want to sum "+num+" numbers ");

sumOfNums = addNumbers(num);

System.out.println("sum of "+num+" numbers = "+sumOfNums);
}



//Define a method which add consecutive numbers based on user's input and return the sum of the numbers
private static int addConsecutiveNumbers (int number)
{
int sum = 0;
for (int i = 1; i <= number; i++)
{
sum = sum + i;
}

return sum;

}


//Define a method which add numbers based on user's input and return the sum of the numbers

private static int addNumbers (int num)
{
Scanner s = new Scanner(System.in);
int a[] = new int[num];
int sumOfNums = 0;

for(int k = 0; k < num; k++)
{
System.out.println("enter  number  "+(k+1)+":");
a[k] = s.nextInt();

System.out.println("The array of a[" + k + "] = " + a[k]);
}

for(int j = 1;j < num ; j++)
{
sumOfNums += a[j];
}

return sumOfNums; 
}
//below is the part of code that I am having trouble with.

public static int multiplyNumbers(int num)
{
    int Area = 0; 
    Scanner s = new Scanner(System.in);
    int a[] = new int[num];
    System.out.println("Please enter how many numbers you want to multiply:");
    num=s.nextInt();
    for(int l = 0; l < num; l++)
    {
    System.out.println("enter  number  "+(l+1)+":");
    a[l] = s.nextInt();
    System.out.println("The array of a[" + l + "] = " + a[l]);
    }
    return Area;
}
}

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Сразу вижу одно; Как я вижу ваш код, следующие две строки являются избыточными:

System.out.println("Please enter how many numbers you want to multiply:");
num=s.nextInt();

Вы должны были уже спросить пользователя, сколько чисел он хочет умножить, потому что он передается как параметр. Что касается вашей реальной проблемы, взгляните на эти строки из метода addNumbers():

for(int j = 1;j < num ; j++)
{
sumOfNums += a[j];
}

Все, что вам нужно сделать, это скопировать этот код прямо перед оператором return (return Area;). Вам нужно будет немного настроить его, чтобы вместо использования переменной sumOfNums он использовал переменную Area и вместо добавления умножал. Это можно сделать так:

for(int j = 0;j < num ; j++) //j also needs to start at 0, I think you may have made a mistake when writing the summing method
{
Area *= a[j];
}

Однако вы заметите, что есть проблема с этим алгоритмом (я почти не уловил ее). Area начинается со значения 0, поэтому 0, умноженный на любое число, всегда будет 0. Простое исправление; просто вручную установите Area на первое значение перед l oop. Примерно так:

Area = a[0];
for(int j = 1; j < num; j++)
{
sumOfNums += a[j];
}

Также обратите внимание, что на этот раз я запустил для l oop в j = 1. Это потому, что я уже начал Area как a[0], поэтому мы не хотим умножать это число дважды.

1 голос
/ 11 июля 2020

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

    public static int multiplyNumbers(int num) {
        int Area = 1;
        Scanner s = new Scanner(System.in);
        System.out.println("Please enter how many numbers you want to multiply:");
        num = s.nextInt();
        for (int l = 0; l < num; l++) {
            System.out.println("enter  number  " + (l + 1) + ":");
            int temp = s.nextInt();
            Area *= temp;
            System.out.println("The array of a[" + l + "] = " + temp);
        }
        return Area;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...