2013-12-13 2 views
-4

Привет, я недавно интересовался java 2 дня назад, и, наблюдая за некоторыми учебниками, я решил сделать калькулятор, увидев пример простого простого добавления. Мне было интересно, где я ошибся. плз помочь им супер новое для него. (также им с помощью затмение ИДК, если это имеет значение)ошибки простого калькулятора java

import java.util.Scanner; 

public class calculator { 
public static void main(String args[]){ 
    Scanner operation = new Scanner(System.in); 
    Scanner number = new Scanner(System.in); 
    int x; 
    int y; 
    int problem = multiplication, division, addition, subtraction; 
    int answer = answerM, answerD, answerA, answerS; 


    System.out.println("enter first number: "); 
    x = number.nextInt(); 
    System.out.println("enter operator: "); 
    signs(); = operation.nextInt();  
    System.out.println("enter second number: "); 
    y = number.nextInt(); 
    System.out.println(answer); 


    if (problem == signs()){ 
     answerM = x * y; 
    }else{ 
     if (problem = signs()){ 
      answerD = x/y; 
     }else{ 
      if (problem == signs()){ 
       answerA = x + y; 
      }else{ 
       if (problem == signs()){ 
        answerS = x - y; 
       } 
      } 
     } 
    } 
} 
private static int signs() { 
    multiplication = "*"; 
    division = "/"; 
    addition = "+"; 
    subtraction = "-"; 
    return 0; 
} 
} 

ошибки, ошибки

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    multiplication cannot be resolved to a variable 
    answerM cannot be resolved to a variable 
    Syntax error on token "=", delete this token 
    answerM cannot be resolved to a variable 
    Type mismatch: cannot convert from int to boolean 

    at calculator.main(calculator.java:10) 
+3

Пожалуйста, потратьте некоторое время на чтение справочной информации перед отправкой, чтобы написать калькулятор. Такие выражения, как 'int problem = умножение, деление, сложение, вычитание,' указывают, что вы _need_ некоторые _bit_ чтения. – devnull

+0

@devnull, это сработает, если раньше было объявлено «умножение»;) –

+0

почему 2 сканера ?? – prime

ответ

0

Проверить этот код .. Это работает нормально. Проверьте свои ошибки и посмотрите на решения.

import java.util.Scanner; 

public class calculator { 

public static void main(String args[]) { 
    // no need of two Scanners to read the same stream 
    // Scanner operation = new Scanner(System.in); 
    // Scanner number = new Scanner(System.in); 
    Scanner input = new Scanner(System.in); 
    int x; 
    int y; 
    // can't declare variables like this in java 
    //  int problem = multiplication, division, addition, subtraction; 
    //  int answer = answerM, answerD, answerA, answerS; 
    int answer = 0; 

    System.out.println("enter first number: "); 
    x = input.nextInt(); 
    System.out.println("enter operator: "); 
    // you can't assign a value to a method call 
    //signs(); = operation.nextInt(); 
    String sign = input.next(); 
    System.out.println("enter second number: "); 
    y = input.nextInt(); 
    //  System.out.println(answer); 


    //  if (problem == signs()) { 
    //   answerM = x * y; 
    //  } else { 
    //   if (problem = signs()) { 
    //    answerD = x/y; 
    //   } else { 
    //    if (problem == signs()) { 
    //     answerA = x + y; 
    //    } else { 
    //     if (problem == signs()) { 
    //      answerS = x - y; 
    //     } 
    //    } 
    //   } 
    //  } 
    if (sign.equals("*")) { 
     answer = x * y; 
    } else { 
     if (sign.equals("/")) { 
      answer = x/y; 
     } else { 
      if (sign.equals("+")) { 
       answer = x + y; 
      } else { 
       if (sign.equals("-")) { 
        answer = x - y; 
       } 
      } 
     } 
    } 
    System.out.println(answer); 

} 
    //This method always return '0' 
    // private static int signs() { 
    //  multiplication = "*"; 
    //  division = "/"; 
    //  addition = "+"; 
    //  subtraction = "-"; 
    //  return 0; 
    // } 
    } 
+0

Большое спасибо. Спасибо за анализ и объяснение каждой части. – chocojo

+0

Для int x и int y, если это будет public int x; и public int y; – chocojo

+0

они находятся внутри метода. (int main method), поэтому они видны только в этом методе. Нет смысла публиковать их. Проверьте проблему [this] (http://stackoverflow.com/questions/16129855/java-never-declares-access-level-of-variables-in-methods-whether-static-or-not). – prime

1

Проблема в этих строках

signs(); = operation.nextInt(); 


if (problem = signs()){ 

его будет присвоить возвращаемое значение signs() переменной problem.

Вы можете лучше использовать equals() т.е. problem.equals(signs())

+1

Как и другие;) –

+0

Круто спасибо. Я пытаюсь это сделать и немного читать на java, прежде чем спешить. – chocojo

+0

@ user3097986 ok Gud ... Keep Going :-) –

0

Задача 1

int problem = multiplication, division, addition, subtraction; 

Задача 2

int answer = answerM, answerD, answerA, answerS; 

Задача 3

signs(); = operation.nextInt(); 

Что нужно помнить:

private static int signs() { 
    multiplication = "*"; 
    division = "/"; 
    addition = "+"; 
    subtraction = "-"; 
    return 0; 
} 

это показывает, что умножение, деление, сложение являются строками Nad Вы писали

int problem = multiplication, division, addition, subtraction; 
  • problem является INT и multiplication является строкой, так это преобразование невозможно.
  • Этот метод возвращает тип int, и он всегда возвращает 0, поэтому для чего нужен тип возврата как int. он должен быть недействительным (это не проблема, но для лучшей практики)
+1

Можете ли вы подробно остановиться на том, почему это проблемы, для оригинального плаката ... –

0

Проблема связана с этими двумя линиями:

int problem = multiplication, division, addition, subtraction; 
int answer = answerM, answerD, answerA, answerS; 

Вы объявили int problem = multiplication, но умножение нигде не определено. Аналогично, в декларации int answer = answerM не определен.

Вы можете удалить эти ошибки, объявляя эти две переменные Int:

int answerM = 0; 
int multiplication = 0; 
+1

О, хорошо, я вижу, где я ошибся с этой частью. Спасибо, человек, не забудьте изменить его. – chocojo

Смежные вопросы