2017-07-27 28 views
-1

シンプルな計算機でこのようなエラーが発生しました 情報:java: '学習'モジュールをコンパイル中にエラーが発生しましたシンプルな計算機で問題が発生しました

Error:(24, 31) java: bad operand types for binary operator '*' 
first type: java.util.Scanner 
    second type: java.util.Scanner 


Error:(27, 31) java: bad operand types for binary operator '/' 
first type: java.util.Scanner 
second type: java.util.Scanner 


Error:(21, 31) java: bad operand types for binary operator '-' 
first type: java.util.Scanner 
second type: java.util.Scanner 


Error:(18, 31) java: bad operand types for binary operator '+' 
first type: java.util.Scanner 
    second type: java.util.Scanner 


Error:(16, 16) java: incompatible types: java.util.Scanner cannot be converted to int 

これは私のコードで私はこれを掲示することになっていないよ場合はあなたの助けの人たちのための

import java.util.Scanner; 

class Main { 

public static void main(String[] args) { 
    Scanner Operation = new Scanner(System.in); 
    Scanner num1 = new Scanner(System.in); 
    Scanner num2 = new Scanner(System.in); 
    float result = 0; 

    System.out.println("What is your first number?"); 
    int num1int = num1.nextInt(); 
    System.out.println("What is your second number?"); 
    int num2int = num2.nextInt(); 
    System.out.println("What operation would you like to perform?"); 
    switch (Operation) { 
     case "addition": 
      result = num1 + num2; 
      break; 
     case "subtraction": 
      result = num1 - num2; 
      break; 
     case "multiplication": 
      result = num1 * num2; 
      break; 
     case "division": 
      result = num1/num2; 
      break; 
    } 

} 

おかげで、また、申し訳ありませんが、私は新たなんです。

+2

エラーが示すとおり、 'result = num1 + num2;'は2つのスキャナを追加しようとしますが、意味がありません。おそらく 'result = num1int + num2int;'を意味します。より意味のある方法で変数に名前を付けた場合は、おそらくそのミスを避けたでしょう。 – assylias

+0

私はあなたの命名計画があなた自身にはあまり役立たないと思う。 2つのスキャナを追加しています(どのような場合でも2つのスキャナが必要なのはなぜですか?)。 – Jack

+0

さて、 'num1 + num2'は、' num1'と 'num2'の両方が' Scanner'型であるとはどういう意味ですか?おそらく 'num1int'と' num2int'を意味していたでしょうか?ヒント: 'num1'はスキャナを参照するための良い変数名ではありません。スキャナ*は数字ではありません。また、2つの異なるスキャナは必要ありません... –

答えて

3

num1およびnum2は数字ではなく、タイプjava.util.Scannerです。

おそらく、あなたは次のように、num1intnum2intを使用するようになります

switch (Operation) { 
    case "addition": 
     result = num1int + num2int; 
     break; 
    case "subtraction": 
     result = num1int - num2int; 
     break; 
    case "multiplication": 
     result = num1int * num2int; 
     break; 
    case "division": 
     result = num1int/num2int; 
     break; 
} 

を私は次のように本当の種類を反映するために名前を変更することをお勧め:

Scanner scannerNum1 = new Scanner(System.in); 
Scanner scannerNum2 = new Scanner(System.in); 
float result = 0; 

System.out.println("What is your first number?"); 
int num1 = scannerNum1.nextInt(); 
System.out.println("What is your second number?"); 
int num2 = scannerNum2.nextInt(); 
switch (Operation) { 
    case "addition": 
     result = num1 + num2; 
     break; 
    case "subtraction": 
     result = num1 - num2; 
     break; 
    case "multiplication": 
     result = num1 * num2; 
     break; 
    case "division": 
     result = num1/num2; 
     break; 
} 

注:さらにIS 2つのスキャナを定義する必要はありません。 1つで十分です。あなたのコードで

1

、あなたが一緒にNUM1とNUM2を追加しようとするライン

result = num1 + num2; 

を持っています。変数名を考えると、これは合理的なようだが、あなたはこれらの行を考えると、それはばかげて次のようになります。

Scanner num1 = new Scanner(System.in); 
Scanner num2 = new Scanner(System.in); 

あなたは理論的には意味がない2台のスキャナを追加することはできませんし、それもあまり意味があります実際には。

result = num1int + num2int; 

これは理論的には結構ですが、あなたはnum1int = 3とnum2int = 4でこの操作を行うのですかしようとしたとき、あなたは結果ではなく、結果= 0を得るでしょう:私はあなたがこれを行うにしようとしていたと仮定します= 0.75:

result = num1int/num2int; 

これは、いつものように、これを回避するために倍増するキャストを入れて0に向けて丸める整数の除算のものである:

result = ((double) num1int)/num2int; 

を、私はこれを明確にするために助けを願ってあなたの問題。がんばろう!

関連する問題