Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

190
Views
Why is it concatenating instead of arithmetic operation?
Scanner sal = new Scanner(System.in);
System.out.print("Enter first_salary: ");
int Salary1 = sal.nextInt();

System.out.print("Enter second_salary : ");
int Salary2 = sal.nextInt();

System.out.print("Combined Salary is " + Salary1 + Salary2);

I am trying to get user input twice, and then print the sum. Instead, the output is concatenating the numbers instead of actually adding them.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Because the + operator associates left to right. Your argument is equivalent to the explicit

(("Combined Salary is " + Salary1) + Salary2)

Since ("Combined Salary is " + Salary1) results in a string, you will concatenate strings. To group differently, adjust the order of operations with parentheses:

System.out.print("Combined Salary is " + (Salary1 + Salary2));
over 4 years ago · Santiago Trujillo Report

0

Like the other answer says, + goes from left to right. It is a "good idea" to always use parentheses that explicitly show the desired order of operations, especially when mixing types.

Doing so can reduce hard to find errors.

For example if you want to print the sum of two integers, you would use:

System.out.println(num1 + num2);

If I wanted to add a useful string to the output I would add "Sum of num1 and num2 :" and then keep the sum in parentheses, giving:

System.out.println("Sum of num1 and num2:" + (num1 + num2));
over 4 years ago · Santiago Trujillo Report

0

As to why this happens, @MadPhysicist's answer covers that.

As to how to avoid this you can either use parentheses as they said or you can use string formatting, like this:

System.out.println("Combined Salary is %d".formatted(Salary1 + Salary2));

String has had the formatted method since Java 15. If you're stuck with an older version you can use the static format method instead:

System.out.println(String.format("Combined Salary is %d", Salary1 + Salary2));
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!