对编程很陌生,在这个小练习中我看不出我哪里错了

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

所以也许你们中的许多人都知道我们需要做的关于学习原语的练习,我们需要在其中打印 h3110 w0r1d 2.0 true

我的就是这个;

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







}

}

他们的解决方案是这样的;

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

}

所以我的给了我布尔和浮点错误,但我看不出这些原语有什么问题。

我得到的错误是这个

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

第一种:float 第二种:布尔值 1 个错误

行:

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

将多个不同类型的参数(其中 none 是一个字符串)串联成一个字符串。

"solution"是通过将字符串连接到其他参数来开始赋值:

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

这会将其余部分转换为字符串。

您可以通过在开头添加一个空字符串来对第一个示例执行相同的操作:

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

旁注:我完全同意T.J。上面克劳德的评论...

该示例有效,因为所有内容都可以自动转换为字符串,并且加法是左关联的。

charString 之间的区别对您来说可能不是很明显。 'C'char 文字,而 "C"String 文字(可以包含多个字符)。

让我们通过示例中字符串连接的几个步骤,从概念上展示如何执行加法:

"H" + a + b + b + zero + d + "w" + zero + "r" + b + "d" + d + e + d + f;
"H3" + b + b + zero + d + "w" + zero + "r" + b + "d" + d + e + d + f;
"H31" + b + zero + d + "w" + zero + "r" + b + "d" + d + e + d + f;
"H311" + zero + d + "w" + zero + "r" + b + "d" + d + e + d + f;
"H3110" + d + "w" + zero + "r" + b + "d" + d + e + d + f;

...等等。每次加法总是 String + 一些其他值,这很好。

另一方面,您代码中的添加尝试添加不兼容的类型,例如 intboolean,它们不会运行。此外,它尝试将结果存储在 String 变量中,这是不可能的,因为结果不是 String.