2017-09-13 43 views
3

因此,我对编程相当陌生,并且刚刚在学校开始上课。我们被告知要制作一个程序,只使用变量类型char,int,byte,float和boolean来打印:“H3110 wor1d 2.0 true”。这是我能够想出的。无法将原始类型值连接成字符串

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 

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

回答

4

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

+的每个用途中,编译器都将其视为加法(两个数字),而不是字符串拼接。 char,byte,intfloat都是数字类型(对于char,其数值是usually其统一码codepoint)。

但是,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; 
+0

或者更简单地说,使用多个打印语句。 – chrylis