Problems converting Integer to String

11,208

Solution 1

(Assuming this is Java...)

The message is correct. Primitive values (such as int) cannot have methods invoked on them as they are not objects. The associated methods are instead registered on the Integer class statically, so instead you should use:

result.setText(Integer.toString(degSum));

(This method also takes an optional second argument that lets you specify the base that you want the number output in, so you can get the hexadecimal representation by calling Integer.toString(degSum, 16) for example. Probably not what you need right now but worth bearing in mind.)

Solution 2

When you concatanate a String to a non-String the result is a String.

e.g.

int deg1 = 5;
int deg2 = 4;
result.setText("" + deg1 + deg2): // passes in "45" (a String)
result.setText("" + (deg1 + deg2)): // passes in "9" (a String)
result.setText(deg1 + deg2); // passes in 9 (an int), compile error
Share:
11,208
Entropy1024
Author by

Entropy1024

Very new to Android and Java. Trying to make sense of it all.

Updated on June 06, 2022

Comments

  • Entropy1024
    Entropy1024 almost 2 years

    I am trying to add two numbers together from EditText fields. So far I have the code below that I believe converts the EditText field 'pos1_deg' & 'pos2_deg' into integers deg1 & deg2.

    deg1 = Integer.parseInt(pos1_deg.getText().toString());
    deg2 = Integer.parseInt(pos2_deg.getText().toString());
    

    I could then do the following to add them together

    degSum = deg1 + deg2
    

    And then the degSum register holds the sum of deg1 & 2. Is this correct so far?

    Then to output back to the 'result' EditText I need to change the integer degSum into a string. I thought the correct way was to use the code below:

    result.setText(degSum.toString());
    

    However I get an 'Cannot invoke toString() on the primitive type int' error. What am I doing wrong?

    Many thanks for any help