无法将基元类型值连接到String中

时间:2017-09-13 21:55:22

标签: java boolean

所以我对编程很新,我刚开始在学校上课。我们被告知制作一个打印的程序:" H3110 wor1d 2.0 true"只使用变量类型char,int,byte,float和boolean。这就是我能想到的。

public class Homework3 {

  public static void main(String[] args) {

    char ab = 'H';
    int cd = 3110;

    char ef = 'w' ;
    byte gh = 0;
    char ig = 'r'; 
    char l = '1'; 
    char d = 'd';
    float mn = 2.0f;
    char op = ' ' ;
    boolean qr = false;



   String x = (ab + cd + ef + gh + ig + l + d + mn + op + qr);
   System.out.println(x);
 }
}   

但是,当我尝试运行它时,我不断收到错误消息。

  String x = (ab + cd + ef + gh + ig + l + d + mn + op + qr);
                                                    ^
 first type:  float
 second type: boolean
1 error

我不知道我做错了什么,并且想知道是否有更简单的方法来编写这个程序。我是否比现在更复杂?

1 个答案:

答案 0 :(得分:4)

+实际上是指Java中的两个不同的运算符:数字加法和字符串连接。它认为你想要使用它取决于上下文(换句话说,两个操作数的类型)。

+的每个用法中,编译器将此视为添加(两个数字),而不是字符串连接。 charbyteintfloat都是数字类型(对于char,其数值为usually其unicode {{3 }})。

但是,boolean不是数字类型,因此在那时失败。

您可以从""开始强制执行字符串连接:

String x = "" + ab + cd + ef + gh + ig + l + d + mn + op + qr; // "H3110w0r1d2.0 false"

或者首先将第一个值转换为String

String y = String.valueOf(ab) + cd + ef + gh + ig + l + d + mn + op + qr;