2016-08-06 3 views
0

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

import java.util.Scanner; 
import java.io.*; 
public class Adding 
{ 
private int numOfInt, newInt; 

/** 
* Constructor for objects of class Adding 
*/ 
public Adding() 
{ 
    // initialise instance variables 
    Scanner console = new Scanner(System.in); 
    System.out.print("How many integers will be added?"); 
    numOfInt = console.nextInt(); 
    newInt = 0; 
} 
public int addIntegers() 
{ 
    int count = 0; 
    int sum = 0; 
    while(count <= numOfInt) 
    { 
     System.out.println("The count is: " + count + " and the current sum is: " + sum); 
     count = count + 1; 
     Scanner console = new Scanner(System.in); 
     System.out.println("Enter an integer: "); 
     newInt = console.nextInt(); 
     sum = sum + newInt; 
    } 
    return sum; 
} 
public void displaySum() 
{ 
      System.out.println("the sum is " + this.addIntegers()); 
} 
} 

Это второй класс для основных:

import java.util.Scanner; 
import java.io.*; 
public class AddingMain 
{ 
public static void main(String[] args) 
{ 
    Adding add = new Adding(); 
    add.addIntegers(); 
    add.displaySum(); 
} 
} 

Однако, цикл повторяется дважды (как можно видеть в приведенном ниже вводе, отредактирована для экономии места) и фактически игнорирует введенный первый набор введенных чисел:

Сколько целых чисел будет добавлено?

Количество: от 0 и ток сумма: 0

Введите целое число:

счетчик равен: 1, а текущая сумма является: 1

Введите целое число:

Счет: 2 и текущая сумма: 3

Введите целое число:

Отсчет: 3 и текущая сумма: 6

Введите целое число:

Отсчет: 0 и текущую сумму это: 0

Введите целое число:

Количество составляет: 1 и ток сумма: 2

Введите целое число:

Отсчет: 2 и текущая сумма: 5

Введите целое число:

Количество составляет: 3 и текущая сумма: 9

Введите целое число:

сумма 14

Может кто-нибудь объяснить, почему это происходит и как это исправить? Спасибо!

+0

Сколько раз цикл должен повторяться? –

+1

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

+4

Каждый вызов 'addIntegers' будет выполнять цикл один раз. Подсчитайте количество вызовов addIntegers в коде. – molbdnilo

ответ

1

Причина в том, что addIntegers вызывается дважды, один раз в main и один раз в displaySum. Таким образом, цикл выполняется и дважды.

0
add.addIntegers(); // invoke 1st time 
add.displaySum(); // invoke 2nd time 

Вы вызывается addIntegers() явно один раз, и он вызывается displaySum() 2-й раз

добавление целых чисел и отображение суммы две разные обязанности, вы бы лучше разделить их на 2 функции. Делает displaySum() сумму отображения только за исключением добавления целых чисел. Вы можете создать переменную экземпляра sum в классе Adding и изменить displaySum() для

public int displaySum(){ 
    return sum; 
} 
0

Вы можете удалить addInteger() от основного(), так что она вызывается только один раз, и вы получите желаемый вывод .

4

Цикл повторяется дважды, потому что вы вызываете addIntegers() дважды.

Самый первый раз, когда вы называли addIntegers() написав add.addIntegers(); и в следующий раз, когда вы под названием addIntegers() написав System.out.println("the sum is " + this.addIntegers());.

this.addIntegers() снова вызывает метод addIntegers().

Extra Предложение

Вы можете использовать объект сканирующего только экземпляр объекта сканера на уровне класса то есть вам не нужно создать экземпляр объекта сканера дважды в вашем коде.

Вы можете пойти, как this--

public class Adding 
{ 
private int numOfInt, newInt; 
Scanner console = new Scanner(System.in); 
Смежные вопросы