Ввод элементов в массив

Я пытаюсь ввести элементы в массив с неизвестными значениями элементов или неизвестным количеством элементов

public class Sales
{
  public void salesAmount()
  {
Scanner scan = new Scanner(System.in);

int sum = 0; 
int salespeople = 0;

    //Create printstatement to ask the user to ("enter the number of sales people");
   System.out.println("Enter the number of sales people: ");


   //store the response in salespeople
   salespeople = scan.nextInt();


    //Create an int array called sales that will have the number entered by user as the number of elements
    int[] sales = new int[salespeople];


    //create a for loop that will loop through the array sales.    
    for(int i = 0; i < salespeople; i++)
{
     //Create print statement that says:  ("Enter sales for salesperson " + i + ": ");
      System.out.println("Enter sales for salesperson " + i + ": ");
      sales[i] = scan.nextInt();
      //store response in sales[i] 
      sum = sum + sales[i];

    }

    System.out.println("Salesperson\tSales");
    System.out.println("--------------------");

    for (int i=0; i<sales.length; i++)
    { 
      System.out.println(i + "\t" + sales[i]); 
      sum += sales[i];
    }

    System.out.println("\nTotal sales: " + sum);
      }
    }

Я распечатываю все это во втором файле, который представляет собой код ниже:

public static void main(String[]args)
{
  Sales sales = new Sales();
  sales.salesAmount();
}

Ожидаемые результаты должны быть суммой всех введенных чисел, но мой результат был их суммой, а затем удвоился.

Вы не сбрасываете sum = 0 перед вторым циклом for. (Или вам не нужно увеличивать сумму во втором цикле for).

Andy Turner 02.05.2019 15:14

Удаление javascript так как он не при чем (javascript это не java)

briosheje 02.05.2019 15:15
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
75
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Проблема в том, что вы суммируете сумму дважды, один раз, когда перебираете продавцов:

sum = sum + sales[i];

Затем еще раз, прежде чем распечатать общий объем продаж:

for (int i=0; i<sales.length; i++)
{ 
  System.out.println(i + "\t" + sales[i]); 
  sum += sales[i];
}

Так что либо вам нужно сбросить сумму перед вторым циклом, т.е. sum = 0;, либо удалить строку sum += sales[i]; из второго цикла.

Ответ принят как подходящий

Во втором цикле for удалите сумму. Делаете прибавления два раза по 2 петли

for (int i=0; i<sales.length; i++)
    { 
      System.out.println(i + "\t" + sales[i]); 
      //sum += sales[i];
    }

    System.out.println("\nTotal sales: " + sum);

Другие вопросы по теме