2014-10-17 67 views
1

所以這是一個計算器問題。我們要有一個Calculator類(包含其他三個類),Number類(用於檢查要處理的數量的類型),Operation類(用於五個操作))和Memory類(用於內存函數)) 。代碼不會輸出我輸入的內容,也不會計算輸入的數字

當我輸入數字,它不會輸出數字,它也不會計算輸入的數字。對不起,如果有任何困惑。任何幫助將不勝感激。

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宇宙(number11,算子2,number33);

相關問題