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.
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));
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));
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));