Search code examples
javastringconcatenationtostringparseint

Java weird Integer.parseInt issue (new to java)


Hello I want to string concatenate two numbers as in the code below:

tmp2 = Integer.toString(preresult) + tmp2.substring(2, tmp2.length());

Tmp2 is a string declared from before. Preresult is a integer that contains a number. If I print this line it adds the two values instead of string concatenation.

If I change Integer.toString(preresult) to for example Integer.toString(5) it string concatenates as I would like it to do. But having Integer.toString(preresult) it adds the two numbers instead of string concatenating.

The code for preresult :

preresult = Integer.parseInt(tmp2.substring(0, 1)) + Integer.parseInt(tmp2.substring(1, 2));

//It picks numbers from tmp2 and adds them together. If I print preresult it gives me a int (for example 9)

Once again please help me concatenate these two strings instead of adding them:

tmp2 = Integer.toString(preresult) + tmp2.substring(2, tmp2.length()); 

New to java please mercy :)


Solution

  • The line you are giving us does concatenate the Strings, but maybe you got confused because the line before sums them:

    // tmp2 == "45" (taken from your comment)
    
    preresult = Integer.parseInt(tmp2.substring(0, 1)) + Integer.parseInt(tmp2.substring(1, 2));
    //                           |------ "4" -------|                     |-------- "5" -----|
    //          |--------------- 4 -----------------|    |------------------ 5 --------------|
    // preresult == 4 + 5 == 9
    
    println(tmp2); // prints the "45" (unchanged)
    
    tmp2 = Integer.toString(preresult) + tmp2.substring(2, tmp2.length());
    //                      |-- 9 --|                     |"45"|
    //     |----------- "9" ---------|   |------------- "" -------------|
    // tmp2 == "9" + "" == "9"
    
    println(tmp2); // prints "9"
    

    So your first line sums the two digits 4 and 5, which results in 9. The line you had given us just concatenates that result "9" (as String) with another empty String and therefore keeps the "9".