Search code examples
javawhile-loopinteger

Trouble printing an int value user entered


So I'm building a program that reads user input in integers and adds the value of all the integers togther

My main method is :

public static void main(String[] args) {

My current code is :

    Scanner scanner = new Scanner(System.in); // imports scanner
     
           
    System.out.print("Enter an number: "); // ask user to enter number 

    // Repeat until next item is an integer
    while (!scanner.hasNextInt()) 
    {        
        scanner.next(); // Read and discard offending non-int input or int + not int input
        System.out.print("Please enter digits only: "); //  tells user to enter again 
    }

    // if user enters int , exits while loop 

    
     //adds ints entered
     int userNumber = scanner.nextInt(); // Gets the int 
        int sumofUsernumber = (0);
        while (userNumber > 0) {
            sumofUsernumber = sumofUsernumber + userNumber % 10;
           userNumber = userNumber / 10;
        }
        System.out.println("The combined value of " + userNumber + (" is ") + sumofUsernumber)

In the last line it supposed to print ther number the user enetered then the sum of the number, instead it prints, 0.

For example : if user enters 101 I'm trying to get it to print "The combined value of 101 is 2" Instead it prints "The combined value of 0 is 2"


Solution

  • You need to store userNumber in some other variable as you are mutating the input from user directly.

    The following code will help you

        // adds ints entered
        int userNumber = 101;
        int temp = userNumber;
        int sumofUsernumber = 0;
        while (temp > 0) {
          sumofUsernumber = sumofUsernumber + temp % 10;
          temp = temp / 10;
        }
        System.out.println("The combined value of " + userNumber + (" is ") + sumofUsernumber);