二进制运算符的不良操作器类型



尝试编写一些非常简单的代码。当我尝试编译时,我收到一个错误,说:

"bad operan types for binary operator*** 
First type:java.lang.string
Second type: Double."

我对编码相当陌生,这意味着什么/任何人都可以帮助我吗?

Scanner in=new Scanner(System.in);
        System.out.println( "Welcome to the Diskusting CD Company online store!");
    System.out.println( "First Name: ");
    String s1=in.next();
    System.out.println( "Last Name: ");
    String s2=in.next();
    System.out.println( "How many CD's?");
    String s3=in.next();
    double CD= 15.99;
    System.out.println( "Cost is " + s3*CD );

s3是一个String。你不能只是用double乘以它.相反,您可以输入 CD 的数量作为int

System.out.println( "How many CD's?");
int numCDs = in.nextInt();
// Here --------^
double CD = 15.99;
System.out.println( "Cost is " + numCDs * CD);

正如@Mureinik指出的,你需要在乘法之前将字符串设置为双精度。只是为了简要评论为什么会这样,请考虑一下如果您尝试"abc" * 10会发生什么 - 目前尚不清楚在这种情况下应该发生什么。

一般来说,Java的类型系统试图确保你尝试执行的操作对于你正在执行的操作类型是有意义的。 abc * 10没有意义。

10 * 10是有道理的,因为它们是同一类型(int(。

10 * 0.50是有道理的,即使一个是int,一个是double',因为有一种明显的方法可以将int转换为double。(请注意,反之则然(。

最新更新