2014-10-17 1 views
1

Так что это проблема с калькулятором. Мы должны иметь класс калькулятора (который содержит три других класса), класс Number (для проверки типов обрабатываемых величин), класс операций (для пяти операций)) и класс памяти (для функций памяти)) ,Код не выводит то, что я ввожу, и не вычисляю номера ввода

Когда я вводил числа, он не выводит число, и он также не вычисляет введенные числа. Извините, если есть какая-то путаница. Любая помощь будет оценена.

import java.util.*; 

public class calculatortest{ 
private Num num; 
private Ope ope; 

public static void main(String args[]){ 
     calculatortest c = new calculatortest(); 
     c.start(); 
} 

public calculatortest() 
{ 

} 
public void start() 
{ 
    describeProgram(); 
    getInput(); 
    displayOutput(); 
    //getMemory(); 
} 
private void describeProgram() 
{ 
    System.out.println("this is kc program and it starts from here"); 

} 
private void displayOutput() 
{ 
    System.out.println("Input number 1: " + num.number1()); 
    System.out.println("Input operator: " + ope.operator()); 
    System.out.println("Input number 2: " + num.number2()); 
    System.out.println("Answer is: " + ope.answer()); 
} 
private void getInput() 
{ 
    double number11; 
    String operator2; 
    double number22; 

    Scanner scanner = new Scanner(System.in); 
    System.out.print("Number 1: "); 
    number11 = scanner.nextDouble(); 
    System.out.print("Operator: "); 
    operator2 = scanner.next(); 
    System.out.print("Number 2: "); 
    number22 = scanner.nextDouble(); 

    //operation = new Operation(number11,operator2, number33); 
    num = new Num (number11, number22); 
    ope = new Ope (number11, number22); 
} 

} 
class Num{ 

private double number11; 
private double number22; 

public Num (double number11, double number22) 
{ 

} 
public double number1() 
{ 
    return number11; 
} 
public double number2() 
{ 
    return number22; 
} 
} 
class Ope 
{ 
String operator2; 
double answer; 
double num1, num2; 

public Ope(double number11, double number22) 
{ 
    setNumber11(number11); 
    setNumber22(number22); 
} 

public String operator() { 
    // TODO Auto-generated method stub 
    return ("does not work"); 
} 

/*public String Ope(String operator) 
{ 
    return operator2; 
}*/ 

public void setNumber11(double number11) 
{ 
    num1 = number11; 
} 
public void setNumber22(double number22) 
{ 
    num2 = number22; 

} 
public double answer() { 

    if(operator2.equals("+")) 
    { 
     double answer = num1 + num2; 
     return answer; 
    } 
    else if(operator2.equals("-")) 
    { 
     double answer = num1 - num2; 
     return answer; 
    } 
    else if(operator2.equals("*")) 
    { 
     double answer = num1 * num2; 
     return answer; 
    } 
    else if(operator2.equals("/")) 
    { 
     double answer = num1/num2; 
     return answer; 
    } 
    return 0; 
} 


} 
//class Mem 

This is the OUTPUT: 
this is kc program and it starts from here 

Number 1: 5 

Operator: + 

Number 2: 5 


Exception in thread "main" java.lang.NullPointerException 

at Ope.answer(calculatortest.java:106) 

at calculatortest.displayOutput(calculatortest.java:33) 

at calculatortest.start(calculatortest.java:20) 

at calculatortest.main(calculatortest.java:9) 


Input number 1: 0.0 

Input operator: does not work 

Input number 2: 0.0 

ответ

-1

Вы должны определить конструктор принимать оператор, как это:

public Ope(double number11, String operator, double number22) 
{ 
    operator2 = operator; 
    setNumber11(number11); 
    setNumber22(number22); 
} 

Тогда на getInput сделать:

операция = новый Ope (номер11, оператор2, number33);