2017-07-27 8 views
-1

Ich habe ständig diese Fehler für einen einfachen Rechner Ich habe versucht zu machen Informationen: java: Fehler beim Übersetzen Modul 'Learning'Probleme mit einem einfachen Rechner Ich habe versucht zu machen

aufgetreten
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 

Das ist mein Code

ist
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; 
    } 

} 

Vielen Dank für Ihre Hilfe Jungs, auch, sorry, wenn ich nicht soll ich dieses Posting werden, ich bin neu.

+2

Da der Fehler sagt: 'Ergebnis = num1 + num2;' 'versucht, zwei Scanner hinzuzufügen, was keinen Sinn macht. Du meintest wahrscheinlich 'result = num1int + num2int;'. Wenn Sie Ihre Variablen sinnvoller benannt hätten, hätten Sie diesen Fehler wahrscheinlich vermieden. – assylias

+0

Ich denke, Ihr Namensschema ist hier nicht so hilfreich. Sie fügen zwei Scanner hinzu (warum brauchen Sie auf jeden Fall zwei Scanner?). – Jack

+0

Nun ja, was denkst du, dass 'num1 + num2' bedeutet, dass' num1' und 'num2' vom Typ' Scanner' sind? Vielleicht hast du "num1int" und "num2int" gemeint? Hinweis: 'num1' ist kein guter Variablenname, um auf einen Scanner zu verweisen, da ein Scanner * keine * Nummer ist. Außerdem brauchen Sie nicht zwei verschiedene Scanner ... –

Antwort

3

num1 und num2 sind keine Nummern, sondern vom Typ java.util.Scanner.

Wahrscheinlich würden Sie num1int und num2int, wie folgt zu verwenden:

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; 
} 

Ich schlage vor, die Namen zu ändern, um die echte Typen wie folgt zu reflektieren:

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; 
} 

Hinweis: zusätzlich ist nicht notwendig, um zwei Scanner zu definieren. Eins reicht.

1

in Ihrem Code haben Sie die Linie

result = num1 + num2; 

wo Sie versuchen, zusammen num1 und num2 hinzuzufügen. In Anbetracht der Variablennamen, dies scheint vernünftig, aber wenn Sie diese Zeilen betrachten, wird es lächerlich:

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

Sie können zwei Scanner nicht hinzufügen, dass, macht keinen Sinn in der Theorie machen und es macht noch weniger Sinn in der Praxis. Ich gehe davon aus, dass Sie dieses versuchen zu tun:

result = num1int + num2int; 

Das ist in Ordnung in der Theorie, aber wenn Sie versuchen, diesen Vorgang zu tun tun mit num1int = 3 und num2int = 4, werden Sie Ergebnis = 0 statt Ergebnis erhalten = .75:

result = num1int/num2int; 

Dies ist wegen der integer-Division, die immer auf 0. eine Besetzung dieses zu verdoppeln Put runden zu vermeiden, etwa so:

result = ((double) num1int)/num2int; 

ich hoffe, dies zu klären, half Ihre Problem. Viel Glück!

Verwandte Themen