Search code examples
javabooleanprimitive

very new to the programming and at the little exercise I cannot see where I am wrong


So maybe many of you knows the exercise we need to do about learning primitives, where we need to print h3110 w0r1d 2.0 true

so mine is this;

public class main {
public static void main(String[] args) {
   // H3110 w0r1d 2.0 true
    byte bir = 0;
    short iki = 31;
    int uc = 10;
    long dort = 1;
    float bes = 2.0f;
    char yedi = 'H';
    char sekiz = 'w';
    char dokuz = 'd';
    char ekstra = ' ';
    char ramk = 'r';
    boolean on = true;

    String son = (yedi + iki + uc + ekstra + sekiz + bir + ramk + dort + dokuz + ekstra + bes + ekstra + on );
    System.out.println(son);







}

}

and their solution is this;

public class Main {
public static void main(String[] args) {
    byte zero = 0;
    short a = 3;
    int b = 1;
    char d = ' ';
    float e = 2.0f;
    boolean f = true;
    String output = "H" + a + b + b + zero + d + "w" + zero + "r" + b + "d" + d + e + d + f;
    System.out.println(output);
}

}

So mine is giving me boolean and float errors, but I cant see what is wrong with that primitives.

the error Im getting is this

Main.java:16: error: bad operand types for binary operator '+'
    String son = (yedi + iki + uc + ekstra + sekiz + bir + ramk + dort + dokuz + ekstra + bes + ekstra + on );
                                                                                                       ^

first type: float second type: boolean 1 error


Solution

  • The line:

    String son = (yedi + iki + uc ...
    

    assigns a concatenation of multiple parameters of different types, none of which is a string, into a string.

    The "solution" is to start the assignment by concatenating a string to the other parameters:

    String output = "H" + a + b + ...
                     ^
    

    which will cast the rest of them - to strings.

    You can do the same with the first example by adding an empty string at the beginning:

    String son = ("" + yedi + iki + uc ...
                  ^
    

    Side-Note: I totally agree with T.J. Crowder's comment above...