2017-05-19 22 views
-2

かなり簡単なコードを書き込もうとしています。バイナリ演算子のオペランドタイプが正しくない

"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); 
+1

問題は、文字列に 'System.out.println(" Cost is "+ s3 * CD);という文字列を掛けようとしていますが、まずs3を数値に変換して乗算します。 –

+2

有用なコンテンツを編集して自分の投稿を破壊しないでください。 – DJMcMayhem

答えて

1

s3は、Stringです。 doubleでそれを掛けることはできません。代わりに、入力intとしてCDの枚数ができます@Mureinikが指摘

System.out.println("How many CD's?"); 
int numCDs = in.nextInt(); 
// Here --------^ 

double CD = 15.99; 
System.out.println("Cost is " + numCDs * CD); 
0

として、あなたは乗算、ダブルあなたの前に文字列を作成する必要があります。理由を簡単に説明するには、"abc" * 10を実行しようとするとどうなるか考えてみてください。この場合、何が起こるべきかは明確ではありません。

一般に、Javaのタイプシステムは、実行しようとしている操作が、どのようなオブジェクトを実行しているのかを理解しようとします。 abc * 10は意味をなさない。

10 * 10は同じタイプ(int)なので意味があります。 doubleintを変換する明白な方法がありますので

10 * 0.50は、「1はintあり、もう1つはdoubleであっても、意味があります。 (その逆は一般的にではなく、であることに注意してください)。